整理的有用的一些EF的CommonDAL小封装
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小封装的更多相关文章
- EF框架搭建小总结--CodeFirst模型优先
前言:之前在下总结编写了一篇 EF框架搭建小总结--ModelFirst模型优先 博文,看到一段时间内该博文的访问量蹭.蹭蹭.蹭蹭蹭...往上涨(实际也不是很多,嘿嘿),但是还是按捺不住内心的喜悦(蛮 ...
- EF框架搭建小总结--CodeFirst代码优先
前言:之前在下总结编写了一篇 EF框架搭建小总结--ModelFirst模型优先 博文,看到一段时间内该博文的访问量蹭.蹭蹭.蹭蹭蹭...往上涨(实际也不是很多,嘿嘿),但是还是按捺不住内心的喜悦(蛮 ...
- IOS 学习资料整理{非常有用,强烈推荐}
绝地地的资源博客:我是雷锋不用谢~~啦啦啦 https://blog.csdn.net/kunga0814/article/details/82117090
- ORM框架 EF - code first 的封装
Code first 是Microsoft Entity Framework中的一种模式,CodeFirst不会有可视化的界面来进行拖动编辑DataBase-Entity,但会以一个类来进行对数据表关 ...
- EF框架搭建小总结--ModelFirst模型优先
前言:去年刚工作的时候,也是刚刚正式接触.net,当时了解了EF以及三种开发模式,Database First.Model First .Code First.公司用的开发模式是Database Fi ...
- ORM框架 EF - code first 的封装 优化一
上一节我们讲到对EF(EntityFramework)的初步封装,任何事情都不可能一蹴而就,通过大量的实际项目的实战,也发现了其中的各种问题.在这一章中,我们对上一章的EF_Helper_DG进行优化 ...
- 关于EF的一点小记录
今日新闻:朝鲜要改革开放了!!!比你牛逼的人都在努力,你还有理由懒惰吗? 宇宙强大IDE配套的EF问题记录 今天做数据添加时,Id我设置为int类型了,结果在做Add操作时报的错让我摸不着头脑,后来问 ...
- 整理一些《纸书科学计算器》的小Tips
本文最开始是在2016年的文章 Win10应用<纸书科学计算器>更新啦! 发表之后撰写的,当时那篇文章收到了不少人点赞,应用在国内市场的日下载量也突然上涨,让我感到受宠若惊,这里要感谢Wp ...
- 【C#】MVC+EF+LINQ 综合小项目
第一,创建数据库 create table category(id int primary key,name nvarchar(20)) create table news(id int primar ...
随机推荐
- WPF Wonders: Transformations (and Robots!)
indows Presentation Framework (WPF) gets a lot of mileage out of being layered on top of DirectX, in ...
- session和jsessionid有什么关系
首先,并不是说你一打开一个页面就会产生一个session. 所谓session你可以这样理解:当你与服务端进行会话时,比如说登陆成功后,服务端会为你开壁一块内存区间,用以存放你这次会话的一些内容,比如 ...
- PowerShell定时记录操作系统行为
作为系统管理员,有些时候是需要记录系统中的其他用户的一些操作行为的,例如:当系统管理员怀疑系统存在漏洞,且已经有被植入后门或者创建隐藏账户时,就需要对曾经登陆的用户进行监控,保存其打开或者操作过的文件 ...
- 2015 Android Dev Summit(安卓开发峰会)第一天
今年的Google I/O没有抽到票,不能到现场参加.不过11月举行的Android Dev Summit的票是先到先得的方式,所以早早的提交了注册.今天终于有机会当面跟Android系统的设计开发者 ...
- lua中得栈
如果你看了LUA的文档,那么就应该很清楚LUA与C交互数据时都是用到LUA中所谓的stack.那么当我调用lua_open函数之后栈是什么样的呢?空的(luaopen_base等会往栈上加进一些东西) ...
- 使用Flask-Migrate进行管理数据库升级
我们在升级系统的时候,经常碰到需要更新服务器端数据结构等操作,之前的方式是通过手工编写alter sql脚本处理,经常会发现遗漏,导致程序发布到服务器上后无法正常使用. 现在我们可以使用Flask-M ...
- PHP cURL应用实现模拟登录与采集使用方法详解
对于做过数据采集的人来说,cURL一定不会陌生.虽然在PHP中有file_get_contents函数可以获取远程链接的数据,但是它的可控制性太差了,对于各种复杂情况的采集情景,file_get_co ...
- 头文件 string.h cstring string 区别
1.#include <cstring> //不可以定义string s:可以用到strcpy等函数using namespace std; #include <stri ...
- NFC 与 Windows Phone 的那点事儿
说起NFC这个词儿应该已经不陌生了,在我们的生活中有很多使用场景都是使用的这项技术,例如公交卡,门禁,还有银联的闪付卡等等.并且近些年在移动设备上使用的场景也越来越多,例如 对 NFC TAG 的读写 ...
- Asp.net Request方法获取客户端的信息
Response.Write("客户端计算机名:" + Request.UserHostName + "<BR />"); Response.Wri ...