繁体   English   中英

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

[英]One-to-one or zero relationship in 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; }
    }

我该如何解决这种情况?

问题在于缺少虚拟关键字。

这样的代码对我有用:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM