考虑将这两个 POCO 类与 EF Code First 一起使用。
public class Sale
{
public int SaleId { get; set; }
public DateTime Date { get; set; }
public double Amount { get; set; }
}
public class History
{
public int HistoryId { get; set; }
public DateTime Date { get; set; }
public double Total { get; set; }
}
这一切都很好,但我实际上希望我的类在我的应用程序中使用它时能代表更多:
public class SaleWithAllIWant
{
public int SaleId { get; set; }
public DateTime Date { get; set; }
public double Amount { get; set; }
public double Calculation // Read only and NOT stored in DB
{
get
{
// Obtain Total from _Context.History on Date
// Perform Calculation
}
}
}
我希望能够使用 EF 的美丽并能够做类似的事情:
gridSales.DataSource = _Context.Sales.ToList();
然而,Sale 并没有我的所有信息。SaleWithAllIWant 不是上下文,因此我必须进行某种后期处理才能将所有内容从 Sale 转换为 SaleWithAllIWant。我可以使用未绑定的列或类似的列,但它会变得混乱并开始影响性能。
我不能只将 SaleWithAllIWant 放在我的 POCO 课程中,因为计算需要了解历史上下文。我的 DAL 项目(创建 DbSet)引用了我的模型项目(包含 POCO 类)——因此模型项目不能引用 DAL 来访问上下文,因为它是循环引用。
解决方案是将它们全部组合在一起而没有单独的 DAL 和模型项目吗?
我怀疑我错过了更好的方法。非常感谢所有评论。