EF( Entity Framework )是Microsoft的ORM框架。
ORM 对象关系映射
- O(Object) 对象,在项目中就是实体,更加精确的来说就是数据Model,也可以说持久化类。
- R(Relation)关系数据库中数据表。
- M (Mapping)映射,将对象映射到关系数据,将关系数据映射到对象的过程。
Entity Framework 有三种实作方式
1. DataBase First 数据库先行
2. Model First 模型先行
3. Code First 代码先行
前两种就是拖控件,按照指引一步步,就可以完成Entity Framework 实现。
Code First 就是代码纯手工打造。
上下文对象
上下文对象(context object)的。上下文对象是实体框架服务的入口,它暴露实体对象,管理数据库连接,生成参数化的SQL语句,从数据库中封送(marshals)数据或封送数据到数据库,缓存对象,维护对象变化跟踪,把无类型的结果集转换到一个强类型的集合对象。
一开始,上下文对象为ObjectContext
对象,现在,实体框架支持另一个最新的名为DbContext
的上下文对象。DbContext
大大简单化了使用实体框架的体验。有趣的是,DbContext
是ObjectContext
的一个包装器或者外观实现者。以一种直观的、友好的、有效的方式暴露底层ObjectContext
的功能。
public class UserInfoRespository : BaseRepository<UserInfo>, IUserInfoRespository
{
private fkbMVCEntities dbase;
public BANKACCOUNTINFORespository(DbContext dt) : base(dt)
{
dbase = (fkbMVCEntities)dt;
}
/// <summary>
/// 查询全部数据
/// </summary>
/// <param name="reqGrid"></param>
/// <param name="querryModel"></param>
/// <returns></returns>
public DataSourceResult GetBackAccountInfoList()
{
var tmpMSTList = dbase.UserInfo;
//排序
tmpMSTList = tmpMSTList.OrderByDescending(item => item.UserID);
//序列化为UserInfoModel
var retList = tmpMSTList.ProjectToList<UserInfoModel>();
var reresult = retList.ToDataSourceResult(reqGrid);
if (reresult != null && reresult.Data != null)
{
var dtList = (reresult.Data as List<BANKACCOUNTINFOModel>);
dtList.SetRowIndex();
reresult.Data = dtList;
}
return reresult;
}
/// <summary>
/// 根据条件查询数据
/// </summary>
/// <param name="reqGrid"></param>
/// <param name="querryModel"></param>
/// <returns></returns>
public DataSourceResult GetBackAccountInfoList(string userName)
{
//筛选条件
var tmpMSTList = dbase.UserInfo;
if (!string.IsNullOrWhiteSpace(userName))
{
tmpMSTList = tmpMSTList.Where(item => item.UserName.Contains(userName));
}
//排序
tmpMSTList = tmpMSTList.OrderByDescending(item => item.UserID);
var retList = tmpMSTList.ProjectToList<BANKACCOUNTINFOModel>();
var reresult = retList.ToDataSourceResult(reqGrid);
if (reresult != null && reresult.Data != null)
{
var dtList = (reresult.Data as List<BANKACCOUNTINFOModel>);
dtList.SetRowIndex();
reresult.Data = dtList;
}
return reresult;
}
/// <summary>
/// 删除全部数据
/// </summary>
/// <param name="editModel"></param>
/// <returns></returns>
public bool DeleteBackAccountInfo()
{
var existModel = dbase.UserInfo;
if (existModel == null)
{
return false;
}
dbase.UserInfo.Remove(existModel);
var i = this.dbase.SaveChanges();
if(i>0)
{
return true;
}
else{
return false;
}
}
/// <summary>
/// 删除全部数据
/// </summary>
/// <param name="editModel"></param>
/// <returns></returns>
public ResponseContext<string> DeleteBackAccountInfo(string UserID)
{
var existModel = dbase.UserInfo.FirstOrDefault(item => item.UserID == UserID );
if (existModel == null)
{
return false;
}
dbase.UserInfo.Remove(existModel);
var i = this.dbase.SaveChanges();
if(i>0)
{
return true;
}
else{
return false;
}
}
/// <summary>
/// 新增数据
/// </summary>
/// <param name="listModel"></param>
/// <returns></returns>
public bool BeachAddData(UserInfoModel> listModel)
{
if (listModel != null)
{
UserInfo model = new UserInfo();
model.ACCOUNT_INFO_ID = item.ACCOUNT_INFO_ID;
model.BANK_NAME = item.BANK_NAME;
model.BANK_NETWORK = item.BANK_NETWORK;
model.BANK_PROVINCE = item.BANK_PROVINCE;
model.BANK_CITY = item.BANK_CITY;
model.BANK_PROVINCE_CD = item.BANK_PROVINCE_CD;
model.BANK_LINE_NO = item.BANK_LINE_NO;
model.LegalUnitID = item.LegalUnitID;
model.R_RECORD_STATUS = item.R_RECORD_STATUS;
model.R_RECORD_CREATE_DATE = item.R_RECORD_CREATE_DATE;
model.R_RECORD_CREATE_USER = item.R_RECORD_CREATE_USER;
model.R_RECORD_UPDATE_DATE = item.R_RECORD_UPDATE_DATE;
model.R_RECORD_UPDATE_USER = item.R_RECORD_UPDATE_USER;
dbase.UserInfo.Add(model);
var i = db.SaveChanges();
if(i>0)
{
return true;
}
else{
return false;
}
}
else
{
return false;
}
}
}
/// <summary>
/// 批量新增数据
/// </summary>
/// <param name="listModel"></param>
/// <returns></returns>
public ResponseContext<UserInfoModel> BeachAddData(List<UserInfoModel> listModel)
{
var rep = new ResponseContext<UserInfoModel>();
if (listModel != null && listModel.Count>0)
{
foreach (var item in listModel)
{
UserInfo model = new UserInfo();
model.ACCOUNT_INFO_ID = item.ACCOUNT_INFO_ID;
model.BANK_NAME = item.BANK_NAME;
model.BANK_NETWORK = item.BANK_NETWORK;
model.BANK_PROVINCE = item.BANK_PROVINCE;
model.BANK_CITY = item.BANK_CITY;
model.BANK_PROVINCE_CD = item.BANK_PROVINCE_CD;
model.BANK_LINE_NO = item.BANK_LINE_NO;
model.LegalUnitID = item.LegalUnitID;
model.R_RECORD_STATUS = item.R_RECORD_STATUS;
model.R_RECORD_CREATE_DATE = item.R_RECORD_CREATE_DATE;
model.R_RECORD_CREATE_USER = item.R_RECORD_CREATE_USER;
model.R_RECORD_UPDATE_DATE = item.R_RECORD_UPDATE_DATE;
model.R_RECORD_UPDATE_USER = item.R_RECORD_UPDATE_USER;
dbase.UserInfo.Add(model);
var i = db.SaveChanges();
}
return rep;
}
else
{
rep.Head = new ResHead(ErrCode.NoData);
return rep;
}
}
}
/// <summary>
/// 编辑银行账户
/// </summary>
/// <param name="queryModel"></param>
/// <returns></returns>
public bool EditBankAccount(UserInfoModel modelList)
{
var existModel = dbase.T_BANK_ACCOUNT.FirstOrDefault(item => item.UserID == modelList.UserID );
if (existModel != null )
{
existModel.ACCOUNT_ID = modelList.ACCOUNT_ID;
existModel.ACCOUNT_TYPE = modelList.ACCOUNT_TYPE;
existModel.PAYEE_ACCOUNT_NATURE = modelList.PAYEE_ACCOUNT_NATURE;
existModel.PAYEE_SUPPLIER_ID = modelList.PAYEE_SUPPLIER_CD;
existModel.PAYEE_SUPPLIER_CD = modelList.PAYEE_SUPPLIER_CD;
existModel.PAYEE_SUPPLIER_NAME = modelList.PAYEE_SUPPLIER_NAME;
existModel.PAYEE_EMPLOYEE_ID = modelList.PAYEE_EMPLOYEE_ID;
existModel.PAYEE_EMPLOYEE_NAME = modelList.PAYEE_EMPLOYEE_NAME;
existModel.PAYEE_BANK_NAME = modelList.PAYEE_BANK_NAME;
existModel.PAYEE_BANK_NAME_EN = existModel.PAYEE_BANK_NAME_EN;
existModel.PAYEE_BANK_CARD = modelList.PAYEE_BANK_CARD;
existModel.PAYEE_NAME_CN = modelList.PAYEE_NAME_CN;
this.dbase.Entry(existModel).State = EntityState.Modified;
var i = db.SaveChanges();
if(i>0)
{
return true;
}
else{
return false;
}
}
else
{
return false;
}
}