我想知道是否有人可以帮我解决我目前遇到的这个问题。
基本上,我有一个我必须处理的遗留数据库。我创建了一些域类来表示我们的db模型。但是,域类不是与数据库表的直接一对一映射。
这是遗留数据库模型的快照:
我的一个域类是这样的:
public class Reading
{
public Location Location {get; set;}
}
public class Location
{
public string Name { get; set;}
}
鉴于上述模型和域类,我该如何映射它们?
我发现的大多数文章都有一对一的映射。
如果你们中的任何人能够提供一些帮助,那将非常感激。
提前致谢。
答案 0 :(得分:1)
EF支持“每种类型的表”(一对一映射),“每个层次结构的表”, “每个具体类型的表”,“表分裂”(进入多个实体)和 “实体拆分”(进入多个表)。
您的阅读表似乎适合每种具体类型的表格。
每种地图类型都可以在Google中轻松找到。 - 搜索“实体框架”“每种具体类型的表格”。
答案 1 :(得分:0)
您可以使用AutoMapper并编写自定义值解析器来映射和聚合对象。
有关自定义操作解析程序的信息,请参阅http://automapper.codeplex.com,更具体地说,http://automapper.codeplex.com/wikipage?title=Custom%20Value%20Resolvers。
答案 2 :(得分:0)
您无法直接通过Entity Framework映射它们,因为您在域模型中的类不是实体(确定您可以,但如果位置Name
不唯一,则可能会产生不良后果)。第一个问题是您的实体必须映射主键并且主键必须是唯一的(我绝对不确定Reading
实体应该表示什么。)
大多数文章描述了整个表的映射,因为这是使用EF的最简单方法。实际上只在EDMX中映射部分表数据意味着手动编写EDMX XML,这是a **的痛苦。您可以使用EF 4.1和流畅的api(没有EDMX)来解决这个问题。如果您只想映射部分数据并且仍然能够插入新记录的非映射列,那么它的表必须是可为空的。