![](/img/trans.png)
[英]How can I implement Entity Framework Repository Design Pattern in my C# DAL library?
[英]Entity Framework with DAL C#
我正在嘗試制作發票管理應用程序。
創建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);
}
因此,當我將數據庫引擎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,然后基於該ID構造一個表達式樹。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.