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

Linq to sql 可以在Linq to SQL中使用相同类型的表吗?,linq-to-sql,Linq To Sql,假设我有一个对象模型,其中有许多相同类型的集合 比如说 class StockMarketData { List<SummaryData> WeeklySummary; List<SummaryData> MonthlySummary; } class SummaryData { DateTime DateTime {get; set;} double Value {get; set;} } class-StockMarketData{ 列出每周摘要;

假设我有一个对象模型,其中有许多相同类型的集合

比如说

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

class SummaryData {
  DateTime DateTime {get; set;}
  double Value {get; set;}
}
class-StockMarketData{
列出每周摘要;
列出每月摘要;
}
类摘要数据{
DateTime DateTime{get;set;}
双值{get;set;}
}
这些列表将映射到数据库表

如果您实际使用L2S从数据库生成模型,您将得到如下结果:

class StockMarketData {
      List<WeeklySummaryData> WeeklySummary;
      List<MonthlySummaryData> MonthlySummary;
    }
class-StockMarketData{
列出每周摘要;
列出每月摘要;
}
尽管周汇总数据和月汇总数据具有相同的形状


Linq to SQL是否可以从摘要数据数据库创建表,但使每个表包含相同的类型(如上图所示)。

实体框架中的设计器支持此方案,但Linq to SQL中的设计器(dbml)不支持此方案

要走更为手动的路径,请创建一个不是数据库实体的类,称为
SummaryData
,并在选择
WeeklySummaryData
MonthlySummaryData
时填充该类。然后,您可以在DataContext部分类(dbml上的查看代码)中公开类似这样的属性:

IQueryable每周摘要
{
得到
{
来自水务署的每周摘要数据
选择新的汇总数据{DateTime=wsd.DateTime,Value=wsd.Value}
}
}
每月一次摘要
{
得到
{
从每月汇总数据中的msd
选择新的汇总数据{DateTime=msd.DateTime,Value=msd.Value}
}
}

注意到这两个方法都有相同的名称-编辑后的第二个称为MonthlySummary
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 }
    }
}