将实体框架类型传递给泛型方法

时间:2018-03-15 21:53:47

标签: c# entity-framework

在我使用Entity Framework的项目中,我有一堆看起来几乎完全相同的函数,所以我想创建一个他们调用的泛型方法:

data

我遇到的问题是TEntity参数说where必须是一个可以使用的引用类型,但实体的类型来自自动生成的代码,而不是我可以通过方法定义的using (var context = new DataModel.MyEntities()) { GetData(context.Lab_SubSpace_Contact); } 子句约束任何基类。

我基本上想通过获取上下文并像这样传递表来调用它:

{{1}}

2 个答案:

答案 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