代码之家  ›  专栏  ›  技术社区  ›  Jack Ukleja

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

  •  1
  • Jack Ukleja  · 技术社区  · 15 年前

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

    例如

    class StockMarketData {
      List<SummaryData> WeeklySummary;
      List<SummaryData> MonthlySummary;
    }
    
    class SummaryData {
      DateTime DateTime {get; set;}
      double Value {get; set;}
    }
    

    这些列表将映射到数据库表上。

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

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

    即使WeeklySummaryData和MonthlySummaryData的形状相同。

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

    1 回复  |  直到 14 年前
        1
  •  2
  •   Quango    14 年前

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

    要走更手动的路径,创建一个不是数据库实体的类,称为 SummaryData 当您选择 WeeklySummaryData MonthlySummaryData . 然后,可以在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 }
        }
    }