实体框架中的一对一或零关系

时间:2013-11-11 11:10:13

标签: c# .net entity-framework

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

我有两个人:

[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属性为null:

[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; }
    }

我该如何解决这种情况?

1 个答案:

答案 0 :(得分: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; }
    }