可以在Linq to SQL中使用相同类型的表吗?

时间:2010-04-20 02:46:48

标签: 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是否可以从摘要数据的数据库中创建表,但是让每个表包含相同的类型(如上图所示)。

1 个答案:

答案 0 :(得分: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 }
    }
}