0

我阅读了一些文章和答案,但没有任何帮助。

我有两个实体:

[DataContract(IsReference = true)]
public class ProductType : IEntity
{
    [DataMember]
    public int Id { get; set; }

    [DataMember]
    public string Article { get; set; }

    //.....
}

[DataContract(IsReference = true)]
public class Product
{
    [Key]   
    [DataMember]
    public int ProductTypeId { get; set; }

    [DataMember]
    [ForeignKey("ProductType")]
    public ProductType ProductType { get; set; }

    [DataMember]
    public decimal Quantity { get; set; }
}

表中的 ProductTypeId 列是主键。我想在这里建立一对一或零关系。但我不能这样做:

// Configure the primary key for the OfficeAssignment
modelBuilder.Entity<Product>()
    .HasKey(t => t.ProductTypeId);

// Map one-to-zero or one relationship
modelBuilder.Entity<Product>()
    .HasRequired(t => t.ProductType)
    .WithOptional(t => t.Product);

因为我在 ProductType 实体中没有 Product 属性。

我试过这个,但 ProductType 属性为空:

[DataContract(IsReference = true)]
    public class Product
    {
        [Key]
        [ForeignKey("ProductType")]
        [DataMember]
        public int ProductTypeId { get; set; }

        [DataMember]
        public ProductType ProductType { get; set; }

        [DataMember]
        public decimal Quantity { get; set; }
    }

我该如何解决这种情况?

4

1 回答 1

0

问题在于错过了虚拟关键字。

这样的代码对我有用:

[DataContract(IsReference = true)]
    public class Product
    {
        [Key]
        [ForeignKey("ProductType")]
        [DataMember]
        public int ProductTypeId { get; set; }

        [DataMember]
        public virtual ProductType ProductType { get; set; }

        [DataMember]
        public decimal Quantity { get; set; }
    }
于 2013-11-11T11:10:12.500 回答