我有一個LINQ到實體「客戶」以及「報告」的SQL架構。每個客戶都有零個或多個報告。LINQ到SQL - 鏈接列表
我希望客戶擁有LinkedList屬性,以便我可以輕鬆訪問每個報表的下一個和上一個實體。
什麼是最好的方式,如果有的話,實現這個使用LINQ to SQL?
感謝
我有一個LINQ到實體「客戶」以及「報告」的SQL架構。每個客戶都有零個或多個報告。LINQ到SQL - 鏈接列表
我希望客戶擁有LinkedList屬性,以便我可以輕鬆訪問每個報表的下一個和上一個實體。
什麼是最好的方式,如果有的話,實現這個使用LINQ to SQL?
感謝
通過LINQ to SQL設計(編譯DBML文件)創建的所有實體分部類。所以,你可以很容易地添加新類解決方案稱爲客戶是這樣的:
public partial class Customer
{
}
您可以在其中放置了幾個公共屬性
public partial class Customer
{
public Report Previous {get { /*...*/ } }
public Report Next {get { /*...*/ } }
}
不過,我建議對這個設計。我會跟隨迭代報告的人去管理下一個報告和之前的報告。另一個更好的設計是爲客戶返回一個雙向枚舉器(我的大腦讓我失望或者我會爲模式和鏈接提供一個合適的名稱),您可以使用它來通過該集合的Next或Previous。
如果您仍想這樣做,您可以使用Skip()和Take()來管理Reports實體集合中的當前位置。
private int _skip = 0;
// in Previous { get {
_skip--;
if(_skip < 0) _skip = 0;
return this.Reports.Skip(_skip).Take(1).FirstOrDefault();
// in Next { get { (not optimized)
_skip++;
if(_skip >= this.Reports.Count()) _skip--;
return this.Reports.Skip(_skip).Take(1).FirstOrDefault();
你可以去到您的LINQ的設計圖到SQL CLAS並右鍵單擊客戶框頭,然後選擇添加 - >協會。 我會出現對話框,然後在你選擇的客戶端作爲父類,報告爲子類,選擇customerid列。 現在在Linq Customer課程中,您可以訪問他們擁有的所有報告。 希望它helpls。