db.Set <t>()如何在EF6中正确使用

时间:2016-12-27 12:45:32

标签: asp.net-mvc c#-4.0 entity-framework-6

我发现如果我们使用

,我们可以编写自定义linq查询
dbContext.set<MyEntity>()

但不能

dbContext.set(SomeType).

我有一个上下文类EGEntities,我有一个实体说&#34;员工&#34;。 如何将员工类型实体分配给MyEntity?这样我就可以创建一个可查询的Employee实例?

另一个失败的想法

var instance = Activator.CreateInstance(thisType);
        GetEntityTemplate(instance, thisType);

// Just to Test

 public static List<Object> GetEntityTemplate<T>(T instance,Type targetType) where T :class
    {
        var Context = new EGEntities();
        var set = Context.Set<T>();
        if (set == null)
        {
            throw new Exception();
        }
        List<object> l = null;
        return l;
    }

但不知道为什么要设置&#39;只是寻找对象&#39;例外是&#34;模型不是当前的背景&#34;虽然实例正确地在参数中携带类实例。

1 个答案:

答案 0 :(得分:0)

DbContext.Set()方法正在进行另一个(非泛型)重载,期望System.Type

var employeesSet = dbContext.Set(typeof(Employee));

如果您已经引用了Employee的现有实例:

var employeeType = myEmployee.GetType();
var employeesSet = dbContext.Set(employeeType);

请参阅MSDN