实体框架:如何向实体添加字段以匹配商店过程结果

时间:2012-06-14 10:40:34

标签: entity-framework-4

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

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

我该怎么办?

感谢。

1 个答案:

答案 0 :(得分:0)

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

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