[解決済み] エンティティタイプ <type> は、現在のコンテキストのモデルの一部ではありません。
2022-01-28 21:19:23
質問
Entity Frameworkに手を出していますが、コードファーストのアプローチで重要なポイントを見逃していないか不安です。
のコードに基づいて、一般的なリポジトリパターンを使用しています。 https://genericunitofworkandrepositories.codeplex.com/ を作成し、私のエンティティを作成しました。
しかし、エンティティにアクセスしたり、変更しようとすると、次のような問題が発生します。
System.InvalidOperationException: エンティティタイプEstateは 現在のコンテキストのモデルの
私のリポジトリからアクセスしようとしているときに起こります。
public virtual void Insert(TEntity entity)
{
((IObjectState)entity).ObjectState = ObjectState.Added;
_dbSet.Attach(entity); // <-- The error occurs here
_context.SyncObjectState(entity);
}
データベース(./SQLEXPRESS)は問題なく作成されるが、起動時にエンティティ(テーブル)が作成されないだけである。
エンティティのマッピングを明示的に設定する必要があるのでしょうか?EF単体ではできないのでしょうか?
私のEntityは
public class Estate : EntityBase
{
public int EstateId { get; set; }
public string Name { get; set; }
}
私のコンテキストはこのようなものです。
public partial class DimensionWebDbContext : DbContextBase // DbContextBase inherits DbContext
{
public DimensionWebDbContext() :
base("DimensionWebContext")
{
Database.SetInitializer<DimensionWebDbContext>(new CreateDatabaseIfNotExists<DimensionWebDbContext>());
Configuration.ProxyCreationEnabled = false;
}
public new IDbSet<T> Set<T>() where T : class
{
return base.Set<T>();
}
}
このエラーが発生する具体的な理由はありますか?移行を有効にしたり、自動移行を有効にしたりしてみましたが、どちらもうまくいきません。
解決方法を教えてください。
これをカスタム
DbContext
クラスがあります。
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Estate>().ToTable("Estate");
}
起動時にテーブルが作成されない場合は、このためです。OnModelCreating メソッドのオーバーライドで、DbContext にそれらのことを伝える必要があります。
ここでエンティティごとのカスタムマッピングを行うこともできますし、エンティティごとに別々の
EntityTypeConfiguration<T>
クラスがあります。
関連
-
[解決済み】「The breakpoint will not currently be hit」を改善するには?このドキュメントにはシンボルが読み込まれていません。" という警告はどうすれば改善されますか?
-
[解決済み】C# ASP.NET使用時に「WebClientのリクエスト中に例外が発生しました。
-
[解決済み】Unity3DでOnTriggerEnterが動作しない件
-
[解決済み】なぜこのコードはInvalidOperationExceptionを投げるのですか?
-
[解決済み] EntityTypeにキーが定義されていないエラー
-
[解決済み】 C# 条件演算子エラー 代入、call、increment、decrement、await、new object 式のみ文として使用可能です。
-
[解決済み】ファイルやアセンブリ、またはその依存関係の1つをロードできませんでした。
-
[解決済み] Could not find a part of the path ... binroslyncsc.exe
-
[解決済み] C#の正しいバージョン番号を教えてください。
-
[解決済み] foreachループの現在の反復処理のインデックスを取得するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】スクリプトクラスが見つからないので、スクリプトコンポーネントを追加できない?
-
[解決済み】C# ASP.NET使用時に「WebClientのリクエスト中に例外が発生しました。
-
[解決済み] DBNullから他の型にオブジェクトをキャストすることができない
-
[解決済み】Unity3DでOnTriggerEnterが動作しない件
-
[解決済み】取り消せないメンバはメソッドのように使えない?
-
[解決済み】MetadataException: 指定されたメタデータ・リソースをロードできない
-
[解決済み】Moqを使用してメソッド呼び出しを検証する
-
[解決済み】WSACancelBlockingCallの例外について
-
[解決済み】画像のペイントにTextureBrushを使用する方法
-
[解決済み】Nullableオブジェクトは値を持たなければならない?