Entity framework 4 使用DefiningQuery将两个表合并到一个实体框架实体中

Entity framework 4 使用DefiningQuery将两个表合并到一个实体框架实体中,entity-framework-4,entity,Entity Framework 4,Entity,我很难将两个实体合并成一个实体,其中一个是只读数据的定义查询 我有一个个人实体和一个公司实体。个人实体通过Company.CompanyID与个人相关。CompanyID为一对多。该公司的数据来自不同的数据库,因此它在我的SSDL中用一个键表示为定义查询。我想通过合并实体使Company中的字段成为Person实体的一部分 错误3024:映射中存在问题 从第445行开始的片段:必须 指定所有键属性的映射 (Person.PersonID)实体集合的 人 我假设问题是公司实体没有PersonID,

我很难将两个实体合并成一个实体,其中一个是只读数据的定义查询

我有一个个人实体和一个公司实体。个人实体通过Company.CompanyID与个人相关。CompanyID为一对多。该公司的数据来自不同的数据库,因此它在我的SSDL中用一个键表示为定义查询。我想通过合并实体使Company中的字段成为Person实体的一部分

错误3024:映射中存在问题 从第445行开始的片段:必须 指定所有键属性的映射 (Person.PersonID)实体集合的 人


我假设问题是公司实体没有PersonID,但我不想用PersonID和CompanyID对公司进行定义查询您有
个人
公司
一对多关系,因此无法将
个人
公司
字段映射到同一个实体中。这种类型的映射称为实体拆分,它需要表之间的一对一关系,这些表只能在共享主键上定义在EF中(因为EF不支持唯一约束)

您的
人员
公司
处于一对多关系中,因此您无法将
人员
公司
字段映射到同一实体中。这种类型的映射称为实体拆分,它需要表之间的一对一关系,这些表只能在共享主键上定义在EF中(因为EF不支持唯一约束)

谢谢你的评论。我最近发现了这一点,并将公司的DefiningQuery简化,并将PersonID添加到公司实体中,使其看起来像一对一的关系。现在,当我添加一个人时,会出现以下错误:
System.Data.UpdateException:无法更新EntitySet“CompanyView”,因为它有一个DefiningQuery,并且元素中不存在支持当前操作的元素。
确保一旦使用DefiningQuery,除非为其创建并映射存储过程,否则您的实体是只读的插入、更新和删除。我希望它是只读的,因为我不想更新公司。我现在认为,不支持将可更新表与只读的DefiningQuery组合到单个实体中。谢谢您的评论。我最近发现了这一点,并将公司的DefiningQuery简化,并将PersonID添加到公司实体中,使其看起来像一对一的关系。现在,当我添加一个人时,会出现以下错误:
System.Data.UpdateException:无法更新EntitySet“CompanyView”,因为它有一个DefiningQuery,并且元素中不存在支持当前操作的元素。
确保一旦使用DefiningQuery,除非为其创建并映射存储过程,否则您的实体是只读的插入、更新和删除。我希望它是只读的,因为我不想更新公司。我现在认为,不支持将可更新表与只读的DefiningQuery组合到单个实体中。