Breeze 微风-多个经理

Breeze 微风-多个经理,breeze,Breeze,我在客户端和服务器端的一个应用程序中使用breeze。我使用一个主管理器来获取所有静态数据,如picklist、combobox等。我使用另一个管理器来编辑视图中的数据 我遵循这里的建议: 但我有问题。我的问题是如何将主经理的信息更改为其他经理的信息 例如,我有这个模型: EntityA{Id,description} EntityB{Id,EntityA(导航属性),EntityAId} 我在模型中有这些数据: EntityA : 1, 'Description 1' 2, 'Descr

我在客户端和服务器端的一个应用程序中使用breeze。我使用一个主管理器来获取所有静态数据,如picklist、combobox等。我使用另一个管理器来编辑视图中的数据

我遵循这里的建议:

但我有问题。我的问题是如何将主经理的信息更改为其他经理的信息

例如,我有这个模型:

EntityA{Id,description}

EntityB{Id,EntityA(导航属性),EntityAId}

我在模型中有这些数据:

EntityA : 
1, 'Description 1' 
2, 'Description 2'
3, 'Description 3'

EntityB
1, EntityA , 1
2, EntityA , 3
在我的视图中,我有一个entitiesB列表,当我选择一个项目进行编辑时,我可以更改它的属性。完成此操作后,我想更新显示列表中的项目。 到目前为止还不错,这对非引用对象非常有效,如int、string等。。。 但是,当我尝试更新同一项目中的EntityB navigation属性以显示正确的描述时,如果我的视图管理器不知道该对象,则该信息不会更新

例如,如果我选择编辑上面列表的第一项

  • 当我设置EntityB.EntityAId=3时。我的视图管理器,将导航属性更新为正确的实体a
  • 当我设置EntityB.EntityAId=2时。我的视图管理器不知道谁是EntityA=2,因此它不会更新导航属性中的信息,并且视图中显示的描述仍然是原始描述,如果是新列表项,则为空
因此,我的问题是如何告诉视图管理器要显示的正确对象?知道我的总经理知道谁是那个目标

我尝试执行EntityA.EntityB=EntitiesB[someIndex],这会产生以下错误:

错误:无法将实体附加到另一个EntityManager中的实体。必须首先分离两个实体中的一个

*答复:

  • 我手动创建了视图管理器中不存在的EntityB(未更改),这可以正常工作。我基于主管理器中选定的EntityB创建此新实体
  • 答案建议如下,也很好用

在我的应用程序中,我根据上下文使用了这两种方法。

您可以从一个管理器导出实体,然后将它们导入另一个管理器。比如说

var arrayOfEntities = [ firstEntity, secondEntity, ... ]
var exportedEntities = entityManager1.exportEntities( arrayOfEntities, false);
var importedEntities = entityManager2.importEntities( exportedEntitites);