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はこれだけではできませんか?
私のエンティティは:
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>();
}
}
このエラーが発生する具体的な理由はありますか?私は何の助けもなく、移行を有効にして自動移行を有効にしてみました。