我想创建一个接受T.
的泛型类T是来自实体框架的对象,表示表或该表的视图。
两者的属性都是一样的。
我想创建一个接受表或视图的泛型类,并根据属性构造一个linq查询。
所以我需要做点什么...... class Foo其中T:myTable或T:myView
以便稍后我可以使用强类型属性来构造我的谓词。
我怎么能达到这样的目的?
我构建查询的方式如下所示:
if (critera.IsTradeDate)
predicate = PredicateUtility.And(predicate, t => t.DateTrade >= critera.FromDate);
t是需要强大的类型,在表和视图上使用的属性是相同的。所以在这种情况下,t应该表示我的表或我的视图,以重用代码,但仍然利用实体框架..
答案 0 :(得分:2)
创建一个接口ITableOrView
(或更好的名称)。将接口应用于表或视图的实体的两个部分类。
使用where T : ITableOrView
现在您可以使用界面类型。
BUT 您无法在Entity Framework查询中的许多地方使用接口,因此您实际上需要将该工作委托给'T'类本身。