簡體   English   中英

創建一個數據庫集<T>在實體框架中動態?

[英]Create a DbSet<T> dynamically in Entity Framework?

在 LINQ to SQL 中,我可以使用DataContext.GetTable<T>動態創建存儲庫。 除了在特定DbContext上聲明屬性之外,在 Entity Framework 4 中是否有類似的方法來執行此DbContext 例如:

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

我想知道如何像使用 LINQ to SQL 那樣動態創建/獲取對MySets的引用, MySets

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

DbContext有這個方法:

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

用:

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

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

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

不要擔心第二次加載和復制 POCO。 集合由上下文在內部緩存。

這是我的方法:

    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>();

這將返回您的整個集合。 我用它來為不經常更改其內容的基本表執行緩存功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM