私はエンティティフレームワークコードファーストを使用しています。これは私の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???????
?
チャールズMagerの答えが正しいとあなたが基礎となるのObjectContextまたは別のDbContextに行きたくない場合の唯一の方法です。ちょうどあなたがいつも(可能な場合)DbContextをブロックでラップする必要があることを言いたいので、適切に処理することができます。 – DevilSuichiro
あなたは確かにチャールズの答えを使うことができますが、少なくとも直接照会しようとするエンティティタイプについては、MyDBontextクラスにTheDbSet <>プロパティを追加するのはなぜですか? – PMV