考虑将这两个 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 和模型项目吗?
我怀疑我错过了更好的方法。非常感谢所有评论。