EF Core将列映射到对象集合

时间:2019-04-11 18:27:48

标签: c# entity-framework-core

我有一个旧数据库,其中包含以下格式(简化)的年度数据:

CategoryId | CategoryName | CountryId | CountryName | Offset | Year0 | Year1 | Year2 | Year3 | Year4 |
------------------------------------------------------------------------------------------------------
         1 | Potatoes     |         2 | Latvia      |   2001 |   123 |   123 |   123 |   123 |   123 |

如您所见,这是时间序列数据,存储5年的数据。根据{{​​1}}列,Offset列将代表不同的年份。

因此在这种情况下,它可以理解为:

Year[0-4]

如果CategoryId | CategoryName | CountryId | CountryName | 2001 | 2002 | 2003 | 2004 | 2005 | ---------------------------------------------------------------------------------------- 1 | Potatoes | 2 | Latvia | 123 | 123 | 123 | 123 | 123 | 发生变化,列含义也将发生变化。

我将致力于编写必须使用此数据库的服务,我想将这些结果映射到这种结构:

Offset

年份列应映射到public class Category { public int Id { get; set; } public string Name { get; set; } } public class Country { public int Id { get; set; } public string Name { get; set; } } public class Datum { public int Year { get; set; } public decimal Sales { get; set; } } public class Experiment { public Category Category { get; set; } public Country Country { get; set; } public IEnumerable<Datum> Datum { get; set; } } ,然后整个对象可以表示如下:

IEnumerable<Datum>

如何使用EF Core做到这一点?

请求的更新。如评论中所建议的那样,使用Linq并不是很难,但是我想知道是否可以将此映射合并到EF Core中。

new Experiment
{
    Category = new Category { Id = 1, Name = "Potatoes" },
    Country = new Country { Id = 2, Name = "Latvia" },
    Datum = new List<Datum>
    {
        new Datum { Year = 2001, Sales = 123 },
        new Datum { Year = 2002, Sales = 123 },
        new Datum { Year = 2002, Sales = 123 },
        new Datum { Year = 2003, Sales = 123 },
        new Datum { Year = 2004, Sales = 123 }
    }
};

0 个答案:

没有答案