我有2个表,一个名为产品,另一个名为样本,带有产品的外键。 样本只包含十进制值和时间戳。 一个产品有一个名称和它的名称。但我想要一个价格(十进制)与产品相关联。价格应为样本中的最新样本。
我对使用实体框架感兴趣,但是如果不直接在表格中进行某些"计算"我怎样才能实现具有价格值的产品实体?需要事先进行吗?
答案 0 :(得分:1)
有一个名为NotMapped的属性可以让你创建一个不会映射到数据库的属性。首先执行代码,这样的事情应该有效:
public class Product
{
public int Id { get; set; }
public virtual IEnumerable<Sample> Samples { get; set; }
[NotMapped]
public decimal Price
{
get { return Samples.OrderByDescending(x => x.TimeStamp).First().Price; }
}
}
public class Sample
{
public int Id {get; set;}
public decimal Price { get; set; }
[Timestamp]
public byte[] TimeStamp {get; set;}
}
如果它不是代码优先的,那么为你构建的EF类是部分类,所以你可以很容易地扩展它。