【问题标题】:Possible to use Tables of same type in Linq to SQL?可以在 Linq to SQL 中使用相同类型的表吗?
【发布时间】:2023-03-06 16:37:01
【问题描述】:

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

比如

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 是否可以从汇总数据数据库创建表,但让每个表包含相同的类型(如上例所示)。

【问题讨论】:

    标签: linq-to-sql


    【解决方案1】:

    实体框架中的设计器支持此方案,但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 }
        }
    }
    

    【讨论】:

    • 注意到两个方法的名称相同 - 已编辑,因此第二个称为 MonthlySummary
    猜你喜欢
    • 2011-08-24
    • 1970-01-01
    • 1970-01-01
    • 2011-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多