CommonDAL封装:

using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Linq.Expressions;
using System.Text; using YX.Model; namespace YX.BLL
{ /// <summary>
/// 基础 dal 类 T 对应数据泛型
/// </summary>
public class CommonDAL<T> : IDisposable where T : class
{
/// <summary>
/// 当前上下文
/// </summary>
DbContext DB; #region 构造函数
public CommonDAL()
{
//默认db为mclentities
this.DB = DBHelper.CreateDB(ConnectionStr.ServiceEntities);
} public CommonDAL(string connName)
{
this.DB = DBHelper.CreateDB(connName);
} public CommonDAL(DbContext db)
{
if (db == null)
{
throw new ArgumentNullException("db");
}
this.DB = db;
} #endregion /// <summary>
/// 当前db
/// </summary>
public DbContext CurrDB
{
get
{
return this.DB;
}
set
{
this.DB = value;
}
} /// <summary>
/// 添加
/// </summary>
/// <param name="t">数据对象</param>
/// <returns>成功否</returns>
public bool Add(T t)
{
try
{
t = DB.Set<T>().Add(t);
return DB.SaveChanges() > ;
}
catch (Exception ex)
{
//添加错误日志
Log.Logger.AddLog(ex.Message, ex);
throw new Exception(ex.Message, ex);
}
} /// <summary>
/// 更新
/// </summary>
/// <param name="t">数据对象</param>
/// <returns>成功否</returns>
public bool Update(T t)
{
try
{
this.DB.Entry<T>(t).State = EntityState.Modified;
return this.DB.SaveChanges() > ;
}
catch (Exception ex)
{
//添加错误日志
Log.Logger.AddLog(ex.Message, ex);
throw new Exception(ex.Message, ex);
}
} /// <summary>
/// 删除
/// </summary>
/// <param name="t">数据对象</param>
/// <returns>成功否</returns>
public bool Delete(T t)
{
try
{
t = DB.Set<T>().Remove(t);
return DB.SaveChanges() > ;
}
catch (Exception ex)
{
//添加错误日志
Log.Logger.AddLog(ex.Message, ex);
throw new Exception(ex.Message, ex);
}
} /// <summary>
/// 返回query
/// </summary>
/// <returns>查询接口</returns>
public IQueryable<T> GetQuery()
{
var query = DB.Set<T>();
return query;
} /// <summary>
/// 根据主键查询
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
//public abstract T Get(Key id); /// <summary>
/// 返回所有值
/// </summary>
/// <returns></returns>
public List<T> GetAll()
{
var dbQuery = this.GetQuery();
return dbQuery.ToList();
} /// <summary>
/// 释放
/// </summary>
public void Dispose()
{
this.CurrDB.Dispose();
}
}
}

DBHelper:

using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Text; namespace YX.BLL
{
/// <summary>
/// 数据上下文创建类
/// </summary>
public class DBHelper
{
/// <summary>
/// 创建上下文db方法
/// </summary>
/// <param name="connName"></param>
/// <returns></returns>
public static DbContext CreateDB(string connName)
{
return new DbContext(connName);
}
}
}

接下来就是在BaseBLL中去调用DAL:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;using YX.Entitys;
using YX.Model.SZR;
using YX.Log; using System.Reflection; namespace YX.BLL.ShenZhouRong
{
public class SZRBaseBLL : BaseBLL
{
/// <summary>
/// 数据操作类
/// </summary>
public CommonDAL<TB_SZR_InterfaceLog> dal; private string _AppID = null;
/// <summary>
/// 当前APPID
/// </summary>
public string CurrentAppID
{
get
{
return this._AppID;
}
set
{
this._AppID = value;
}
}
/// <summary>
/// 构造函数
/// </summary>
public SZRBaseBLL()
{
dal = new CommonDAL<TB_SZR_InterfaceLog>();
} /// <summary>
/// 按 ID 获取
/// </summary>
/// <param name="id">id</param>
/// <returns>数据对象</returns>
public TB_SZR_InterfaceLog GetSingle(int id)
{
return dal.GetQuery().Where(s => s.Id == id).FirstOrDefault();
}

public void Add()
{

Model_11 tss = new Model_11
{
CreateDate = DateTime.Now,
ERROR_CODE = ERROR_CODE,
IDNO = IDNO,
NAME = NAME,
RESULT = RESULT
};
CommonDAL<Model_11> dal = new CommonDAL<Model_11>();
return dal.Add(tss);

        }
}
}

整理的有用的一些EF的CommonDAL小封装的更多相关文章

  1. EF框架搭建小总结--CodeFirst模型优先

    前言:之前在下总结编写了一篇 EF框架搭建小总结--ModelFirst模型优先 博文,看到一段时间内该博文的访问量蹭.蹭蹭.蹭蹭蹭...往上涨(实际也不是很多,嘿嘿),但是还是按捺不住内心的喜悦(蛮 ...

  2. EF框架搭建小总结--CodeFirst代码优先

    前言:之前在下总结编写了一篇 EF框架搭建小总结--ModelFirst模型优先 博文,看到一段时间内该博文的访问量蹭.蹭蹭.蹭蹭蹭...往上涨(实际也不是很多,嘿嘿),但是还是按捺不住内心的喜悦(蛮 ...

  3. IOS 学习资料整理{非常有用,强烈推荐}

    绝地地的资源博客:我是雷锋不用谢~~啦啦啦 https://blog.csdn.net/kunga0814/article/details/82117090

  4. ORM框架 EF - code first 的封装

    Code first 是Microsoft Entity Framework中的一种模式,CodeFirst不会有可视化的界面来进行拖动编辑DataBase-Entity,但会以一个类来进行对数据表关 ...

  5. EF框架搭建小总结--ModelFirst模型优先

    前言:去年刚工作的时候,也是刚刚正式接触.net,当时了解了EF以及三种开发模式,Database First.Model First .Code First.公司用的开发模式是Database Fi ...

  6. ORM框架 EF - code first 的封装 优化一

    上一节我们讲到对EF(EntityFramework)的初步封装,任何事情都不可能一蹴而就,通过大量的实际项目的实战,也发现了其中的各种问题.在这一章中,我们对上一章的EF_Helper_DG进行优化 ...

  7. 关于EF的一点小记录

    今日新闻:朝鲜要改革开放了!!!比你牛逼的人都在努力,你还有理由懒惰吗? 宇宙强大IDE配套的EF问题记录 今天做数据添加时,Id我设置为int类型了,结果在做Add操作时报的错让我摸不着头脑,后来问 ...

  8. 整理一些《纸书科学计算器》的小Tips

    本文最开始是在2016年的文章 Win10应用<纸书科学计算器>更新啦! 发表之后撰写的,当时那篇文章收到了不少人点赞,应用在国内市场的日下载量也突然上涨,让我感到受宠若惊,这里要感谢Wp ...

  9. 【C#】MVC+EF+LINQ 综合小项目

    第一,创建数据库 create table category(id int primary key,name nvarchar(20)) create table news(id int primar ...

随机推荐

  1. AWVS漏洞测试-03节-添加扫描项目

    http://localhost:9660 我们要扫描这个页面 点击左上角的New Scan,在Scan Single哪里输入要扫描的网站地址,可以是本地地址 然后选择下一步 Next 这里我们可以配 ...

  2. Android View绘制原理分析

    推荐两篇分析view绘制原理比较好的文章,感谢作者的分享. <Android应用层View绘制流程与源码分析> <View 绘制流程>

  3. Modbus通讯协议学习 - 串口调试

    概述 我们在做任何事情之前都需要获取很多 调试步骤: 1:485转换器连接硬件 2:485转换器上的USB接口连接电脑. 3:打开设备管理器 ->查看端口 4:打开串口调试工具,在串口配置的地方 ...

  4. 基于Bootstrap的后台通用模板

    人总是比较刁的,世界的时尚趋势不断变化,对系统UI的审美也在不断疲劳中前进,之前觉得好好的UI,过了半年觉得平平无奇,不想再碰,需要寻求新的兴奋点. 下面这套UI就是半年前的(今日:2015-12), ...

  5. Solve: Your project references the latest version of Entity Framework (for MySQL) in Visual Studio 2013

    The error message while trying to create a ADO.net Entity Data Model ( Entity Framework 6 ) for MySq ...

  6. 延长Toast显示时间

    ---恢复内容开始--- 由于Toast的显示时间只有两种: Toast.LENGTH_SHORT: 2秒 Toast.LENGTH_LONG: 3.5秒 而且是写死的,没给开发者自定义时间的权利,所 ...

  7. Carthage 安装和使用

    和Cocoapods相比各有利弊吧,具体对比参见: Carthage 初探:四大优势与四大劣势 第一步:如果没有安装Homebrew先安装 打开命令终端,直接输入以下命令回车 /usr/bin/rub ...

  8. eclipse新建一个Android项目,就会报错android.support.v7.app.ActionBarActivity

    解决方法: 今天被这个问题折腾了一下,最后终于找到了解决办法. 产生这个问题,是因为你升级了ADT到version 22,但是还需要升级SDK Tools,Platform Tools,Build T ...

  9. 纯CSS3实现3D特效的iPhone 6动画

    iPhone 6发布不久,屌丝怎能买得起,不过作为程序员,今天看到一个用纯CSS3绘制的iPhone 6,由于CSS3特性的运用,带有点3D的动画特效,大家可以先来看看在线演示效果. 在线演示    ...

  10. boost 1.56.0 编译及使用

    boost的编译和使用,经过搜集资料和总结,记录成文.感谢文后所列参考资料的作者. 1 下载 地址:http://sourceforge.net/projects/boost/files/boost/ ...