Breeze 轻松创建具有查找表的复杂实体

Breeze 轻松创建具有查找表的复杂实体,breeze,Breeze,我是新来的角和微风。我正在尝试创建一个同时拥有客户关系的新团队。My DB结构有3个受组、UserToGroups和CustomerToGroups表影响的表。实体管理器已注册表和引用。我的问题是,在将记录添加到查找表之前,是否需要先创建组?如果groupId不存在,则不能创建UserToGroups记录或CustomerToGroups记录。Breeze和实体经理正在处理所有这些吗?我能一次完成这一切吗?怎么做 controller.js function addCustAndGroup(Cu

我是新来的角和微风。我正在尝试创建一个同时拥有客户关系的新团队。My DB结构有3个受组、UserToGroups和CustomerToGroups表影响的表。实体管理器已注册表和引用。我的问题是,在将记录添加到查找表之前,是否需要先创建组?如果groupId不存在,则不能创建UserToGroups记录或CustomerToGroups记录。Breeze和实体经理正在处理所有这些吗?我能一次完成这一切吗?怎么做

controller.js
function addCustAndGroup(CustId, grpId, GroupCategory, GroupDesc) {
 var newGroup = app.dataservice.manager.createEntity("Group");
 newGroup.GroupId(CustId);
 newGroup.GroupCategory(GroupCategory);
 newGroup.GroupDescription(GroupDesc);
 manager.StudnetsToGroup.push(studentToGroup);
 manager.UserToGroup.push(userToGroup);
 manager.saveChanges();
};

我想指出您正在做的一些我感到不安的事情:您的
dataservice
将管理器暴露给它的调用者。拥有
数据服务的一个关键原因是封装EntityManager。。。对所有呼叫者隐藏它。如果要将管理器公开给呼叫者,为什么还要麻烦使用数据服务呢

我没有太多的绝对规则,但你打破了其中的一条,即“永远不要从数据服务中暴露EntityManager”。我从来没有放松过这条规则。我向你保证,你会后悔打破它

我认为您想要做的是让您的数据服务公开一个
createGroup
方法。创建组的所有工作都应该放在
dataservice

现在,我已经完成了咆哮,我试图理解您的实际问题和代码。对不起,我有点迷路了。我被
manager.UserToGroup.push
难住了,因为(a)EntityManager没有
UserToGroup
成员,(b)Breeze API中没有
push
方法。。。当然,在EntityManager缓存中添加/附加实体的操作与此不同

我不知道你的哪些“表格”是“查阅表格”。我有点被“表”和“记录”这两个词弄糊涂了,因为您似乎真的在谈论实体类型和实体实例,而不是数据库对象。我得到了并行性,但在实体和它们映射到的数据库结构之间保持清晰的区别是值得的

最后我要承认我的困惑:你的问题主题是指“复杂的实体”。Breeze有一个叫做“复杂类型”的概念。我想你不是这个意思。我想你的意思是你相信你的实体是复杂的。是这样吗

我觉得这些都离你问题的答案越来越近了。。。我无法完全理解。这似乎是关于您是否必须先创建一种类型的实体,然后再创建另一种类型的实体。但我不能肯定

我想你必须先澄清你的问题,然后才能得到正确的答案