私は、コードを最初に既存のデータベースに使用するソリューションで汎用リポジトリを実装しようとしています。 Context.Setを実行しようとすると、「エンティティタイプが現在のコンテキストのモデルの一部ではない」というエラーが表示されます。私は何が欠けていますか?コードを既存のデータベースContext.Set <T>が動作しない
public partial class CPContext : DbContext
{
public CPContext()
: base("name=CPContext")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
}
}
モデル:
[Table("Core.Tenant")]
public partial class Tenant : IEntity
{
}
使用法:これはエラーをスロー
var context = new CPContext();
var dbSet = context.Set<Tenant>();
var results = dbSet.ToList();
- エンティティタイプは、私ができた
現在のコンテキストのためのモデルの一部ではありませんContextのOnModelCreatingイベントを変更することでそれを取得する -
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Tenant>().ToTable("Core.Tenant");
}
しかし、なぜデータアノテーションをテーブル名に使用するときに上記の操作を行う必要があるのかわかりません。ここで完全に失われました
"Core"が名前空間である場合、この注釈['Table(" Tenant "、Schema =" Core ")]を使用するとよいでしょう。 – Kinetic
問題は部分的なキーワードに由来し、データアノテーションからではありません。 @KiNeTiCの回答に記載されているように、exacatlyでDbSetを使用してください! –
@BassamAlugili DbSetを宣言せずにFluent Mappingで動作しますが、部分的に言及しましたが、Contextはこのシナリオに部分的にどのように影響しますか? – ocChipMunk