C# 如何使用EF6 datacontext返回通用实体?

C# 如何使用EF6 datacontext返回通用实体?,c#,entity-framework,entity-framework-6,C#,Entity Framework,Entity Framework 6,我有一个简单的数据库,其中有一个“Person”和一个“Subscription”表,每个人都有一个或多个订阅 private MyDBContext_dbContext; public T GetByID(int ID) { return _dbContext.Mapping. ?? } 现在的意图是创建一个通用方法,根据提供的类型从datacontext返回Person实体或Subscription实体 在Linq2SQL中,

我有一个简单的数据库,其中有一个“
Person
”和一个“
Subscription
”表,每个人都有一个或多个订阅

    private MyDBContext_dbContext;       

    public T GetByID(int ID)
    {
        return _dbContext.Mapping. ??
    }
现在的意图是创建一个通用方法,根据提供的类型从datacontext返回Person实体或Subscription实体

在Linq2SQL中,我能够使用
.GetTable
方法,在EntityFramework 6中,我该如何做同样的事情?intellisense甚至无法识别
.Mapping
部分,因此我这里缺少一些基本信息


谢谢

DbContext为您提供了设置方法。您可以将其用作通用方法:

DbSet<Person> people = DbContext.Set<Person>();
DbSet-people=DbContext.Set();
或非通用:

DbSet<Person> people = DbContext.Set(typeof(Person)) as DbSet<Person>;
DbSet-people=DbContext.Set(typeof(Person))为DbSet;

我不确定这是否有帮助,但EF的DatabaseContext与以前的ObjectContext不同,但是您可以像这样访问对象上下文,或许可以找到熟悉的背景:本文讨论通用存储库模式。请慎重考虑利弊。如果您的应用程序很大,并且具有很长的生命周期,并且有很多更新和更改,那么一般的repo可能不是一个好主意。+1@rommik哦,这篇文章很好-谢谢,顺便说一句,为什么它不是一个好主意?但是我需要指定DbContext.Set(T),这样它就可以检查T的类型并从datacontext返回正确的实体了?:(但这不是GetTable方法所做的吗?您正在寻找的区别是什么?若要在调用Set方法后按id查找实体,可以调用find方法。若要按id查找给定表上的实体,只需使用:context.Set().find(id)