我試圖創建一個簡單的數據訪問類,它充當庫來返回各種實體。我所有的實體類都是通過VS 2013中的Linq-to-SQL映射器生成的,所有實體類都可以通過Find(primary id)從dataContext返回非泛型類中的泛型方法
我想定義一般的Find,Delete,更新等,而不必爲每個表/對象重複它,但我不想創建一個存儲庫模式。
如何創建一個通用的方法,無論工作嗎?這就是我所擁有的,當然它說T沒有定義,但我認爲我們可以在非泛型類中創建泛型方法,所以我做錯了什麼?
我想什麼做的是一樣的東西
var c = DAL<Customer>.Find(id)
var e = DAL<Employee>.Find(id)
...等
我試圖寫的代碼是
public class DAL
{
private string _key;
private DataContext _context = null;
//private DbSet<T> _table = null;
public DAL(string key)
{
_key = key;
_context = new DataContext();
}
public void Dispose()
{
_context.Dispose();
}
public DbSet<T> Find<T>(int id)
{
var d = _context.Set<T>();
//return d.Find(id);
}
}
我有點失落...我不想定義
public class DAL<T> where T:class
它關係到每個DAL一種類型
這是我第一次涉足通用nethods所以任何幫助讚賞
這與MVC或LINQ無關,編輯標籤... – 2014-11-06 04:50:02
爲什麼?爲什麼?? var c = DAL。find(id)=在linq中有一個簡單的Db.Customers.Single(c => c.id ==?); DAL的好處是什麼? –
Pleun
2014-11-06 20:38:48
@Pleun我聽到你的痛苦,我會做更多的不僅僅是訪問(例如,採用一些緩存等,一些集中代碼),如果沒有多大意義,我沒有任何疑慮,它會將其殺死 – Gerry 2014-11-07 15:40:54