我正在用C#,.NET Framework 4.0和Entity Framework Code First 6.1.3開發一個庫。1..n與複合外鍵的關係出錯
VariableData_AggregationLevelConfiguration_Source:
當我嘗試使用EF我得到這個錯誤:多樣性是 的作用 'VariableData_AggregationLevelConfiguration_Source' 的關係 'VariableData_AggregationLevelConfiguration' 無效。因爲依賴角色是指關鍵屬性,所以依賴角色的多重性必須是'1'。
我想設計這樣的:
一個ProductionOrder
可以有一個或多個AggregationLevelConfiguration
。
一個AggregationLevelConfiguration
可能有零個或多個VariableData
。
一個ProductionOrder
可能有一個或多個VariableData
。
這些類:
public class AggregationLevelConfiguration
{
public byte AggregationLevelConfigurationId { get; set; }
public int ProductionOrderId { get; set; }
[ ... ]
public virtual ProductionOrder ProductionOrder { get; set; }
public virtual IList<VariableData> VariableData { get; set; }
}
public class VariableData
{
public string VariableDataId { get; set; }
public int ProductionOrderId { get; set; }
public byte AggregationLevelConfigurationId { get; set; }
[ ... ]
public virtual AggregationLevelConfiguration AggregationLevelConfiguration { get; set; }
}
public class ProductionOrder
{
public int ProductionOrderId { get; set; }
[ ... ]
public ICollection<AggregationLevelConfiguration> AggregationLevelConfigurations { get; set; }
public virtual ICollection<VariableData> VariableData { get; set; }
}
而這些配置類:
public class AggregationLevelConfigurationConfiguration : EntityTypeConfiguration<AggregationLevelConfiguration>
{
public AggregationLevelConfigurationConfiguration()
{
HasKey(agl => new { agl.AggregationLevelConfigurationId, agl.ProductionOrderId });
[ ... ]
HasRequired(agl => agl.ProductionOrder)
.WithMany(po => po.AggregationLevelConfigurations);
}
}
public class VariableDataConfiguration : EntityTypeConfiguration<VariableData>
{
public VariableDataConfiguration()
{
HasKey(vd => new { vd.AggregationLevelConfigurationId, vd.ProductionOrderId });
[ ... ]
HasRequired(vd => vd.AggregationLevelConfiguration)
.WithMany(agl => agl.VariableData)
.HasForeignKey(vd => new { vd.AggregationLevelConfigurationId, vd.ProductionOrderId });
}
}
public class ProductionOrderConfiguration : EntityTypeConfiguration<ProductionOrder>
{
public ProductionOrderConfiguration()
{
HasKey(po => po.ProductionOrderId);
Property(po => po.ProductionOrderId)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
[ ... ]
HasRequired(po => po.Product)
.WithMany(p => p.ProductionOrders)
.HasForeignKey(po => po.ProductId);
}
}
但我認爲這是正確的。
這是什麼錯誤?或者,我該如何解決這個問題?
謝謝。在我的第一個版本中,'VariableData'中的主要部分是'HasKey(vd => new {vd.AggregationLevelConfigurationId,vd.ProductionOrderId,vd.VariableDataId});'但是當我嘗試使用另一個錯誤時(我不記得它)創建「AggregationLevelConfiguration」的外鍵。也許錯誤出現在'.HasForeignKey'中的列順序中。 – VansFannel