26

在 LINQ to SQL 中,我可以使用DataContext.GetTable<T>. 除了在特定的DbContext. 例如:

public MyDbContext: DbContext
{
    public DbSet<MySet> MySets {get; set;}
}

我想知道如何MySets使用 LINQ to SQL 动态创建/获取对的引用,如下所示:

var mySet = MyDbContext.GetTable<MySet>();
4

3 回答 3

44

DbContext有这个方法:

  var set = context.Set<MyEntity>();
于 2011-03-15T08:54:07.183 回答
20

利用:

DbSet<MyEntity> set = context.Set<MyEntity>();

或者,如果您不能使用通用方法:

DbSet set = context.Set(
    typeof( MyEntity )
);

不用担心二次加载和复制 POCO。集合由 Context 在内部缓存。

于 2011-03-15T09:48:12.663 回答
2

这是我的方法:

    public static List<T> GetCollection<T>()
    {
        List<T> lstDynamic = null;

        using (MyDbContext db = new MyDbContext())
        {
            DbSet mySet = db.Set(typeof(T));
            mySet.Load();
            var list = mySet.Local.Cast<T>();

            lstDynamic = list.ToList();
        }
        return lstDynamic;
     }

你称这个函数为:

List<Customer> lst = StaticClass.GetCollection<Customer>();

这将返回您的整个集合。我用它来为不会经常更改其内容的基本表执行缓存功能。

于 2020-03-13T18:55:42.077 回答