2010-04-20 43 views
1

可以說我有一個對象模型,我有很多相同類型的集合。可能使用Linq to SQL中相同類型的表?

例如像

class StockMarketData { 
    List<SummaryData> WeeklySummary; 
    List<SummaryData> MonthlySummary; 
} 

class SummaryData { 
    DateTime DateTime {get; set;} 
    double Value {get; set;} 
} 

這些列表會映射到數據庫表。

如果你實際使用L2S生成來自數據庫的模型,你會得到這樣的:

class StockMarketData { 
     List<WeeklySummaryData> WeeklySummary; 
     List<MonthlySummaryData> MonthlySummary; 
    } 

即使WeeklySummaryData和MonthlySummaryData具有相同的形狀。

Linq to SQL是否可以從彙總數據庫創建表,但讓每個表都包含相同的類型(如上例所示)。

回答

2

設計師在實體框架中支持此場景,但在linq to sql中的設計器(dbml)中不支持此場景。

要選擇較爲人工的路徑,請創建一個不是數據庫實體的類,稱爲SummaryData,並在您選擇WeeklySummaryDataMonthlySummaryData時填充該類。然後,您可以公開像這樣關DataContext的部分類(查看代碼在DBML)性質:

IQueryable<SummaryData> WeeklySummary 
{ 
    get 
    { 
     from wsd in WeeklySummaryData 
     select new SummaryData { DateTime = wsd.DateTime, Value = wsd.Value } 
    } 
} 

IQueryable<SummaryData> MonthlySummary 
{ 
    get 
    { 
     from msd in MonthlySummaryData 
     select new SummaryData { DateTime = msd .DateTime, Value = msd.Value } 
    } 
} 
+0

注意到,這兩種方法有相同的名字 - 編輯,以便第二個叫MonthlySummary – Quango 2011-01-31 17:24:26