2

我无法在我的 Products 类与 ProductSpecification 类上创建一对多关系,该类具有两个主键 ProductId、SpecificationId。Products 类并不总是有 ProductSpecification 类有没有人不知道如何解决我的问题我遇到了一个与上限 1 有关的错误。我是 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; }
}

数据上下文:

modelBuilder.Entity<ProductSpecification>().HasKey(x => new { x.ProductId, x.SpecificationId });

modelBuilder.Entity<Specification>().HasOptional(x => x.ProductSpecs)
    .WithMany().HasForeignKey(x => x.SpecificationId);
4

1 回答 1

0

使您的 ForeignKey 可以为空:

公长?规范 ID { 获取;放; }

公共虚拟规范?规格{得到; 放; }

于 2013-10-04T17:51:05.683 回答