【发布时间】:2015-01-28 15:40:22
【问题描述】:
您好,我正在尝试在多上下文项目中启用迁移。我收到此错误:
在模型生成过程中检测到一个或多个验证错误: Mellon.Pricing.RiskControl.Migrations.RetornoValidacao: : EntityType 'RetornoValidacao' 没有定义键。定义此 EntityType 的键。
问题是上下文中没有这样的 DBSet。
代码如下:
public partial class RiskControlContext : DbContext
{
public RiskControlContext()
: base("RiskControlContext")
{
}
#region Repositorios
IDbSet<DeParaCurvas> _deParaCurvas;
public IDbSet<DeParaCurvas> DeParaCurvas
{
get { return _deParaCurvas ?? (_deParaCurvas = base.Set<DeParaCurvas>()); }
}
IDbSet<DeParaPrecos> _deParaPrecos;
public IDbSet<DeParaPrecos> DeParaPrecos
{
get { return _deParaPrecos ?? (_deParaPrecos = base.Set<DeParaPrecos>()); }
}
IDbSet<PrecoRiskControl> _precoRiskControl;
public IDbSet<PrecoRiskControl> PrecoRiskControl
{
get { return _precoRiskControl ?? (_precoRiskControl = base.Set<PrecoRiskControl>()); }
}
IDbSet<VerticeRiskControl> _verticeRiskControl;
public IDbSet<VerticeRiskControl> VerticeRiskControl
{
get { return _verticeRiskControl ?? (_verticeRiskControl = base.Set<VerticeRiskControl>()); }
}
#endregion
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
//Remover as conventions que não são usadas
modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
//Adiciona a configuração das entidades de maneira estruturada usando as classes 'TypeConfiguration' em Mapping
modelBuilder.Configurations.Add(new DeParaPrecosConfiguration());
modelBuilder.Configurations.Add(new DeParaCurvasConfiguration());
modelBuilder.Configurations.Add(new PrecoRiskControlConfiguration());
modelBuilder.Configurations.Add(new VerticeRiskControlConfiguration());
}
}
【问题讨论】:
-
看来您可能需要查看物理数据库中的对象并搜索
RetornoValidacao。初始迁移期间是否出现错误?或者它是一个更新?如果是更新,您确定没有在您的上下文之外创建键(字段或对象)吗? -
嗨,这是启用迁移命令。数据库本身不存在
-
它似乎以某种方式将 DbSets 添加到我的上下文中。
-
我在迁移项目中将我的域对象重新创建为 POCO 类,我可以摆脱这个错误。但这不是我想要的。看起来它试图映射我的对象具有的其他依赖项
-
异常实际抛出于:var dbMigrator = new DbMigrator(migratorConfig);
标签: entity-framework entity entity-framework-migrations