最佳答案
我正在进入实体框架,但我不确定是否遗漏了代码优先方法中的一个关键点。
我使用了一个基于 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>();
}
}
发生这种错误的具体原因是什么?我试过在没有任何帮助的情况下启用迁移和自动迁移。