Breeze使用查找表创建复杂实体

时间:2013-10-31 18:18:04

标签: breeze

我是Angular和Breeze的新手。我正在努力创建一个与客户关系同时建立的新团队。我的数据库结构有3个表影响Groups,UserToGroups和CustomersToGroups表。实体管理器已注册表和引用。我的问题是,在将记录添加到查找表之前,是否需要先创建组?如果groupId不存在,则它应该无法创建UserToGroups记录或CustomersToGroups记录。 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();
};

1 个答案:

答案 0 :(得分:0)

我想指出你正在做的事情我发现令人担忧:你的dataservice将经理暴露给其来电者。 拥有 dataservice的一个关键原因是封装EntityManager ...以将其隐藏在所有呼叫者之外。如果您要将经理暴露给呼叫者,为什么还要烦恼数据服务呢?

我没有很多绝对的规则,但你已经打破了少数人中的一个,即“永远不会从数据服务中暴露出EntityManager。”我从来没有放松过这条规则。我保证你会后悔破坏它。

我认为您要做的是让您的dataservice公开createGroup方法。创建组的所有工作都应该隐藏在dataservice内。

现在我已经完成了咆哮,我正试图理解你的实际问题和你的代码。对不起,我有点迷茫。我被manager.UserToGroup.push难倒了,因为(a)EntityManager没有UserToGroup成员,(b)Breeze API中没有push方法...当然没有用于向EntityManager缓存添加/附加实体。

我不知道哪些“表”是“查找表”。无论如何,我对“table”和“record”这两个词感到困惑,因为你似乎真的在谈论实体类型和实体实例,而不是数据库对象。我得到了并行性,但值得保持实体与它们映射到的数据库结构之间的明确区别。

最后承认我的困惑:你的问题主题是指“复杂实体”。 Breeze有一个名为“复杂类型”的概念。我不认为这就是你的意思。我认为你的意思是你认为你的实体很复杂。是吗?

我觉得这一切都没有接近你问题的答案......我无法理解。似乎是否必须在不同类型之前创建一种类型的实体。但我无法确定。

我认为在你得到正确答案之前,你必须澄清你的问题。