0

我的实体框架中有一个实体 (Org),该实体具有一个外键,其中一个表位于另一个数据库 (BusinessUnit) 中。我们需要外键来获取与 Org 链接的 BusinessUnit 的描述。过去(没有实体框架的旧项目)我们使用存储过程来返回有关此实体的所有信息,包括业务单元描述,使用连接。所以现在我的问题是如何显示与使用实体框架之前相同的信息。

我试过,一旦我从数据库加载我的 Org 实体,循环访问 BusinessUnit 以获取每个 Org 的描述,但这太慢了。我的另一个想法是使用存储过程,但是我的实体上需要一个额外的字段,而 Entity Frameworks 给了我一个 3004 错误:没有为我的属性指定映射。我正在考虑使用复杂类型,但我不确定这是否是我需要记住的我必须向我的实体添加一个字段。在这种情况下,我是否可以将复杂类型仅用于“选择”操作并保留我的原始实体用于其余的 CRUD 操作?

我应该如何进行?

谢谢。

4

1 回答 1

0

EF 无法跨多个数据库执行查询。如果您需要执行此类查询,您必须使用数据库视图并将视图映射为新实体(它将是只读的 - 使其可更新需要映射插入、更新和删除存储过程)或将数据查询分为两个单独的部分以从两个数据库加载数据。分割查询可以使用两个上下文,也可以使用存储过程从第二个数据库中获取数据。

您收到错误的原因是您在 EDMX 中添加了该属性。EDMX 只能包含映射到您的第一个数据库的属性。EDMX 将实体代码生成为部分类 如果您需要从第二个数据库手动填充属性,则必须为实体创建部分部分(部分类)并在代码中添加属性。

于 2012-06-15T08:02:24.660 回答