实体框架6 - 插入/更新由视图连接的2表

时间:2015-01-20 05:40:44

标签: entity-framework entity-framework-6

在我的数据库中我有

  1. 包含基本成员详细信息的Member表(MemberId [主键 - 自动生成的数字],MemberName,IsActive)。
  2. 一个MembersDetails表,其中包含有关该成员的更多详细信息(地址,电话,生日......)。 MembersDetails将MemberId字段作为Members表的外键。
  3. 有一个原因(应用程序逻辑的一部分)2个表是分开的,并不是全部在一个表中。

    我创建了一个获取完整成员详细信息的视图(两个表的连接),并且Entity Framework创建了一个表示该视图的对象。

    我有两个问题:

    1. 除了在数据库中创建视图之外,是否有更好的方法将2个连接表展平为对象?
    2. 我想创建一个视图类型的对象(完整的用户详细信息),初始化它的属性并将其插入数据库(这将把它需要的信息放在Members表中,生成id,而不是插入到MemberDetails表中)。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

广告1。
我认为出于性能原因,数据库视图将是一个不错的选择。
但是您可以调查实体框架提供的继承。
它允许您在一个包含所有属性的模型对象中连接两个分离的表(来自“derived”和“base”表)。注意,对于一对一关系(但不是一对多关系)是可以的 Implementing Inheritance with the Entity Framework 6 in an ASP.NET MVC 5 Application

广告2
实体框架继承将很好地帮助您解决这个问题。或者,如果您可以使用数据库视图,只需创建用于插入和更新视图中包含的数据的存储过程,然后在Entity Framework生成的视图模型上映射指定操作的存储过程。