2016-10-02 4 views
1

私はエンティティフレームワークコードファーストを使用しています。これは私のDbContextです。ご覧のとおり、DbSet <>のプロパティはありません。これらはすべて、C#CodeDOMによって提供されているモデルクラスから提供されます。 テーブルコードファーストを使用して動的に作成しています。DbContextをDbSet <>が内部にないときにクエリ用に使用する方法

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

} 

が、今、私は私が私のDbContext内部の任意のDbSet <>せずに私のクエリLINQのを書くことができるのか分からないのですか?私のDbContextのインスタンスを作成し、どのプロパティを使用しますか?私はこのような状況で私CRUD操作 Sを書き込むことができますどのように

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

+0

チャールズMagerの答えが正しいとあなたが基礎となるのObjectContextまたは別のDbContextに行きたくない場合の唯一の方法です。ちょうどあなたがいつも(可能な場合)DbContextをブロックでラップする必要があることを言いたいので、適切に処理することができます。 – DevilSuichiro

+0

あなたは確かにチャールズの答えを使うことができますが、少なくとも直接照会しようとするエンティティタイプについては、MyDBontextクラスにTheDbSet <>プロパティを追加するのはなぜですか? – PMV

答えて

0

DbContext.Set<TEntity>方法は、例えば、特定のタイプのためDbSet<TEntity>を返します。

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

はい...その素晴らしい...ありがとう –

関連する問題