我是實體框架的新手。我首先使用第5版代碼。在實體框架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");
});
初始化數據,但它不工作。隨着上的方法,我得到的錯誤:
Schema specified is not valid. Errors: (9,6) : error 0040: Type RebateBase_AvailableTurnoverClassifications is not defined in namespace CustomerConfiguration.Datalayer (Alias=Self).
當我刪除第二導航屬性enabledturnoverClassifications萬物是很好,我不需要適應在模型構建的映射。只要我添加第二個導航屬性,我會得到錯誤。
任何人都可以請幫忙嗎?
謝謝。
格爾茨
哈利
它的工作原理。非常感謝。 – Harry