未加载属性实体数据

时间:2014-05-01 16:52:53

标签: entity-framework

我正在研究实体框架并使用代码优先和数据注释。

我的问题是,在尝试获取数据时,相关属性的数据未被加载(即所有值始终为0)

以下是我的代码:

public class Product
{
    [Key()]
    public int ProductID { get; set; }

    public string Name { get; set; }
    public bool IsActive { get; set; }

    [Required]
    [ForeignKey("Price")]
    public int PriceID { get; set; }
    public virtual Price Price { get; set; }

    public Product()
    {
        this.ProductID = 0;
        this.Name = String.Empty;
        this.Price = new Price();
        this.IsActive = true;
    }


public class Price
{
    [Key()]
    public int PriceID { get; set; }
    public decimal CostPrice { get; set; }
    public decimal RetailPrice { get; set; }


    public Price()
    {
        this.PriceID = 0;
        this.CostPrice = 0.00m;
        this.RetailPrice = 0.00m;
    }
}

以下是按ID获取数据的代码:

    public Product Get(int ID)
    {
        Product output = null;

        using (PrismContext context = new PrismContext())
        {

            output = context.Products.Include("Price")
                        .Where(p => p.ProductID == ID)
                        .FirstOrDefault();


            return output;
        }
    }

我可以从Product对象的属性中获取数据,但Price始终为0

1 个答案:

答案 0 :(得分:0)

这是因为您在Price构造函数中初始化Product

删除此行:

this.Price = new Price();

此外,Price构造函数完全是冗余的,因为它将属性初始化为其默认值。