我正在研究实体框架并使用代码优先和数据注释。
我的问题是,在尝试获取数据时,相关属性的数据未被加载(即所有值始终为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
答案 0 :(得分:0)
这是因为您在Price
构造函数中初始化Product
。
删除此行:
this.Price = new Price();
此外,Price
构造函数完全是冗余的,因为它将属性初始化为其默认值。