【发布时间】:2015-06-27 14:23:42
【问题描述】:
我是实体框架的新手。我首先使用的是版本 5 代码。
我有一个模型:
class RebateBase
{
public int ID { get; set; }
public RebateType RebateType { get; set; }
public virtual ICollection<Customer> Customers { get; set; }
public virtual ICollection<TurnoverClassification> AvailableTurnoverClassifications { get; set; }
public virtual ICollection<TurnoverClassification> EnabledTurnoverClassifications { get; set; }
public RebateBase()
{
if (AvailableTurnoverClassifications == null)
{
AvailableTurnoverClassifications = new List<TurnoverClassification>();
}
if (EnabledTurnoverClassifications == null)
{
EnabledTurnoverClassifications = new List<TurnoverClassification>();
}
if (Customers == null)
{
Customers = new List<Customer>();
}
}
还有一个模型
class TurnoverClassification
{
public string Name { get; set; }
public virtual ICollection<RebateBase> RebateBases{ get; set; }
[Key]
public int NumericalValue { get; set; }
}
我已经尝试使用和不使用初始化数据
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
modelBuilder.Entity<RebateBase>()
.HasMany<TurnoverClassification>(rb => rb.AvailableTurnoverClassifications)
.WithMany(tc => tc.RebateBases)
.Map(rt =>
{
rt.MapLeftKey("RebateID");
rt.MapRightKey("TurnoverID");
rt.ToTable("RebateBase_AvailableTurnoverClassifications");
});
modelBuilder.Entity<RebateBase>()
.HasMany<TurnoverClassification>(rb => rb.EnabledTurnoverClassifications)
.WithMany(tc => tc.RebateBases)
.Map(rt =>
{
rt.MapLeftKey("RebateID");
rt.MapRightKey("TurnoverID");
rt.ToTable("RebateBase_EnabledTurnoverClassifications");
});
但它不起作用。使用上面的方法,我得到了错误:
指定的架构无效。错误:(9,6):错误 0040:类型 RebateBase_AvailableTurnoverClassifications 未定义在 命名空间 CustomerConfiguration.Datalayer (Alias=Self)。
当我删除第二个导航属性 enabledturnoverClassifications 时,一切都很好,我不需要在模型构建器中调整映射。添加第二个导航属性后,我立即收到错误消息。
有人可以帮忙吗?
谢谢。
问候
哈利
【问题讨论】:
标签: c# entity-framework