我正在进入实体框架,但是不确定是否缺少代码优先方法的关键点。
我正在使用基于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>();
}
}
是否有任何特定原因导致此错误发生?我尝试了启用迁移并启用自动迁移,而没有任何帮助。