2010-04-20 35 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