实体框架与DAL c#
本文关键字:DAL 框架 实体 | 更新日期: 2023-09-27 18:05:17
我正在尝试制作一个发票管理应用程序。
创建DAL对象时,我必须为每个表重复Add
和Delete
函数。
public class MyDBProcessor :IMyDBProcessor {
tpEntities tp=new tpEntities();
public void AddCustomerToDB(tblCustomers Customer) { tp.tblCustomers.Add(Customer); tp.SaveChanges();}
public void AddOrderToDB(tblOrders Order) { tp.tblOrders.Add(Order); tp.SaveChanges(); }
public tblCustomers GetCustomerFromDB(string CustomerID) { return tp.tblCustomers.Where(x => x.ID == CustomerID); }
public tblOrders GetOrderFromDB(string OrderID) { return tp.tblOrders.Where(x => x.ID == OrderID); }
}
这是非常令人沮丧的,因为有这么多的表。我想这样改变DAL接口:
public interface IMyGenericDBProcessor {
void AddToDB<T>(T Record);
T GetFromDB<T>(int RecordID);
}
所以,当我改变db引擎MySQL到SQL Server或反之亦然。如何编写一个实现IMyGenericDBProcessor
的类?
谢谢你,
添加很容易:
public interface IMyGenericDBProcessor
{
void AddToDB<T>(T Record) where T : class;
}
public class MyDBProcessor : IMyGenericDBProcessor
{
public void AddToDB<T>(T record) where T : class
{
using(var tp = new tpEntities())
tp.Set<T>().Add(record);
}
}
GetFromDb将更加复杂,因为您必须根据实体上下文的元数据确定哪个属性包含ID,然后基于该属性构造一个表达式树。