2016-10-02 46 views
1

我使用的是實體框架代碼 - 首先是,這是我的DbContext。如你所見,DbSet <>屬性和所有這些將從我提供的模型類提供C#CodeDOM。我通過使用Code-First動態創建我的如何在沒有DbSet <>裏面使用DbContext,以便查詢?

public class MyDBContext : DbContext 
{ 

    public MyDBContext() : base("MyCon") 
    { 
     Database.SetInitializer<MyDBContext>(new CreateDatabaseIfNotExists<MyDBContext>()); 
    } 
    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     var entityMethod = typeof(DbModelBuilder).GetMethod("Entity"); 
     var theList = Assembly.GetExecutingAssembly().GetTypes() 
        .Where(t => t.Namespace == "FullDynamicWepApp.Data.Domins") 
        .ToList(); 
     foreach (var item in theList) 
     { 
      entityMethod.MakeGenericMethod(item) 
          .Invoke(modelBuilder, new object[] { }); 
     } 
     base.OnModelCreating(modelBuilder); 
    } 

} 

,但現在我不知道我怎麼能寫我的查詢的LINQ沒有任何DbSet <>的DbContext裏面?使我的DbContext的實例,並使用哪些屬性?

MyDBContext Db = new MyDBContext(); 
     Db.What??????? 

我怎麼能寫我的CRUD操作 S IN這些情況?

+0

查爾斯·馬傑的答案是正確的,如果你不想去的根本ObjectContext的或其他的DbContext的唯一途徑。只是想提及你應該總是(在可能的情況下)使用block來包裝你的DbContext,這樣它們才能被正確處置。 – DevilSuichiro

+0

您當然可以使用Charles的答案,但是爲什麼不只是將DbSet <>屬性添加到MyDBContext類中,至少對於您打算直接查詢的實體類型? – PMV

回答

0

DbContext.Set<TEntity>方法將返回一個DbSet<TEntity>給定類型,e.g:

Db.Set<Entity>().Add(entity); 
+0

是的......它真棒......謝謝 –

相關問題