2
我在我的產品類上創建1對多關係時遇到了產品規格類有兩個主鍵ProductId,SpecificationId的問題。產品類並不總是有一個ProductSpecification類沒有人沒有如何解決我的問題我得到一個錯誤做與上限1.我是新來的EF和先做代碼,所以如果你知道該怎麼做,請離開一個詳細的解釋謝謝。EF多列鍵列一對多
類:
public class ProductSpecification
{
[Key]
[Column(Order = 1)]
public long ProductId { get; set; }
[Key]
[Column(Order = 2)]
public long SpecificationId { get; set; }
[ForeignKey("ProductId")]
public virtual Product Product { get; set; }
[ForeignKey("SpecificationId")]
public virtual Specification Specification { get; set; }
}
public class Specification
{
[Key]
public long SpecificationId { get; set; }
[Required(ErrorMessage = "Please enter a product specification name.")]
[DataType(DataType.Text)]
public string Name { get; set; }
[Required(ErrorMessage = "Please enter a product specification value.")]
[DataType(DataType.Text)]
public string Value { get; set; }
[ForeignKey("SpecificationId")]
public virtual ICollection<ProductSpecification> ProductSpecs { get; set; }
}
的DataContext:
modelBuilder.Entity<ProductSpecification>().HasKey(x => new { x.ProductId, x.SpecificationId });
modelBuilder.Entity<Specification>().HasOptional(x => x.ProductSpecs)
.WithMany().HasForeignKey(x => x.SpecificationId);
我想你需要在流利和註釋風格之間進行選擇......我的意思是我不認爲你可以使用* both *來定義相同的東西。 –
如果你刪除了' modelBuilder'代碼? –
如果我刪除數據註釋,則會得到相同的錯誤多重性衝突 – ONYX