1

我有 2 个 EntityFramework 上下文和相应的 API 控制器。
我有 2 个微风 entityManager。
我用 entityManager1 读取了一些国家/地区数据。
我用 entityManager2 读取了一些公司数据。

现在我想显示以下列表:
CompanyName1 CountryName1
CompanyName2 CountryName2
等。

在淘汰赛中,它看起来像这样:

<table data-bind="foreach: companies">
  <tr>
    <td data-bind="text: name"></td>
    <td data-bind="text: country().name"></td>   <!-- from another entitymanager -->
  </tr>
</table>

这可能吗。我尝试过:
- 在 entityManager1 上使用 exportEntities / 在 entityManager2 上使用 importEntities
- 向 entityManager2 添加了第二个 dataService,因此 entityManager1 的相同元数据可用

运气不好。
有没有办法解决这个问题?
有没有办法将来自一个 entityManager 的数据与另一个结合起来?
有没有办法在两个不同的 metadataStores 实体之间设置外键关系?

谢谢,干杯哈利

4

2 回答 2

1

我打赌您希望能够从一个模型中定义的实体导航到另一个模型中定义的实体。那是对的吗?

如果是这样,那将行不通……不是“开箱即用”。BreezeEntityManager允许来自不同模型的实体在缓存中共同居住。但它不能构成不同模型实体之间的导航。

例如,假设CompanyDbContext#1 和#2Country中定义并且DbContext您已经安排了两个不同的元数据源,一个来自DBC#1(例如,new EFContextProvider<DBC1>().Metadata),一个来自DBC#2(例如,new EFContextProvider<DBC2>().Metadata)。

您将无法从 Model #2中编写aCompany.Country()和获取实例。Country不在服务器上的实体框架中。不在微风客户端上(没有一些聪明)。原因很简单:Company并且Country在不同的模型模式中定义。它们很可能位于以完全不同的技术托管在不同服务器上的不同数据库中。

现在您可以构建自己的客户端Company属性来Country为您导航。那是你想做的吗?

FWIW,即使实体是在同一模型架构中定义的,您也无法从一个管理器中的实体导航到不同管理器中的实体。EntityManager 彼此严格隔离。如果CompanyCountry被定义在同一个模式中,并且由于某种原因您在一个经理中拥有一个Company并且在另一个经理中具有相关Country性,那么如果您愿意,您将不得不导入一个或另一个(例如,Country进入Company的经理)在实例之间导航。我这样说是为了清楚。我认为这不是问题,因为您说您尝试导入实体但没有成功。

让我们退后一步。你想做什么?为什么这些实体的定义不同DbContexts

于 2013-05-15T20:31:00.717 回答
0

从一个 EntityManager 导出实体并将它们导入另一个应该可以工作。问题是什么?

于 2013-05-15T16:52:23.230 回答