您的位置:首页 > 其它

整理的有用的一些EF的CommonDAL小封装

2016-06-24 11:02 218 查看
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() > 0;
}
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() > 0;
}
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() > 0;
}
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);

}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: