考慮使用EF Code First使用的這兩個POCO類。擴展POCO類以使用其他上下文進行計算
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();
但是,銷售不包括我所有的信息。 SaleWithAllIWant不是一個上下文,所以我不得不做一些類似的後屠宰從Sale到SaleWithAllIWant。我可以使用未綁定的列或類似的東西,但會變得雜亂,並開始影響性能。
我不能只將SaleWithAllIWant放入我的POCO類中,因爲計算需要知道歷史上下文。我的DAL項目(創建DbSets)引用了我的Model項目(其中包含POCO類) - 所以Model項目無法引用DAL以訪問上下文,因爲它是循環引用。
解決方案只是把它們全部放在一起,而沒有單獨的DAL和Model項目?
我懷疑有更好的方法我錯過了。所有的評論非常感謝。
謝謝@Serge。合併可能的路要走。擴展方法是一個好主意,但我無法將其綁定到擴展方法,就好像它是Sale類中的屬性那樣?我仍然需要使用某種調用擴展的未綁定列?謝謝 – user1622713
@ user1622713我不完全確定你綁定了什麼(看起來像WebForms或WinForms中的DataGrid),但是你絕對應該能夠在不擴展模型的情況下顯示計算值。如果你可以提供更多的細節,答案會更容易。 –