实体框架与DAL c#

本文关键字:DAL 框架 实体 | 更新日期: 2023-09-27 18:05:17

我正在尝试制作一个发票管理应用程序。

创建DAL对象时,我必须为每个表重复AddDelete函数。

例如:

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的类?

谢谢你,

实体框架与DAL c#

添加很容易:

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,然后基于该属性构造一个表达式树。