在我使用Entity Framework的项目中,我有一堆看起来几乎完全相同的函数,所以我想创建一个他们调用的泛型方法:
data
我遇到的问题是TEntity
参数说where
必须是一个可以使用的引用类型,但实体的类型来自自动生成的代码,而不是我可以通过方法定义的using (var context = new DataModel.MyEntities()) {
GetData(context.Lab_SubSpace_Contact);
}
子句约束任何基类。
我基本上想通过获取上下文并像这样传递表来调用它:
{{1}}
答案 0 :(得分:2)
要展开@Igor's answer,您不必通过library(data.table)
dt1 <- data.table(id = 1)
dt2 <- data.table(id = 1, letter = letters)
dt1[
dt2
, on = "id"
, letter := i.letter
]
dt1
# id letter
# 1: 1 z
,您也可以通过type参数动态获取该内容:
DbSet<TEntity>
答案 1 :(得分:1)
您不需要基类,只需指定一个必须是类(不是结构)的约束。这可以使用where TEntity : class
Constraints on Type Parameters
where T : class
:type参数必须是引用类型;这也适用于任何类,接口,委托或数组类型。
修改后的代码
private IHttpActionResult GetData<TEntity>(DbSet<TEntity> data) where TEntity : class