2009-12-02 6 views

ответ

2

Вы могли бы сделать что-то вроде LINQ к SQL DataContext.GetTable метод:

public T GetById<T>(int id) 
{ 
    return _db.GetTable<T>().First(m => m.ID = id); 
} 

Тогда вы могли бы назвать его следующим образом:

GetById<Foo>(10); 
GetById<Bar>(10); 
+0

Это похоже на то, на что я надеялся, за исключением того, что LINQ to Entities не использует DataContext. – chris

+0

вы можете использовать Type.GetProperties на вашем _db, чтобы узнать, есть ли у него какие-либо свойства типа T. – scottm

+0

По какой-то причине Type.GetType ("myEDMX") возвращает null. – chris

0

Вам нужно абстрагировать доступ к свойству Foo и Bar_db первый. Тогда общая часть становится довольно прямой.

public T GetByID<T>(int id) 
{ 
return _db.GetCollection<T>().First<T>(m => m.ID == id); 
} 

Возможно, вам потребуется ограничить T типом, который имеет свойство ID, если компилятор жалуется.

public T GetByID<T>(int id) where T : IHaveID 
{ 
} 
Смежные вопросы