泛型类约束:2种类型

时间:2010-10-21 19:55:29

标签: linq entity-framework generics

我想创建一个接受T.

的泛型类

T是来自实体框架的对象,表示表或该表的视图。

两者的属性都是一样的。

我想创建一个接受表或视图的泛型类,并根据属性构造一个linq查询。

所以我需要做点什么...... class Foo其中T:myTable或T:myView

以便稍后我可以使用强类型属性来构造我的谓词。

我怎么能达到这样的目的?

我构建查询的方式如下所示:

        if (critera.IsTradeDate)
            predicate = PredicateUtility.And(predicate, t => t.DateTrade >= critera.FromDate);

t是需要强大的类型,在表和视图上使用的属性是相同的。所以在这种情况下,t应该表示我的表或我的视图,以重用代码,但仍然利用实体框架..

1 个答案:

答案 0 :(得分:2)

创建一个接口ITableOrView(或更好的名称)。将接口应用于表或视图的实体的两个部分类。

使用where T : ITableOrView

创建通用类

现在您可以使用界面类型。

BUT 您无法在Entity Framework查询中的许多地方使用接口,因此您实际上需要将该工作委托给'T'类本身。