0

Angular と Breeze は初めてです。同時に顧客関係を持つ新しいグループを作成しようとしています。私の DB 構造には、Groups、UserToGroups、および CustomersToGroups テーブルに影響する 3 つのテーブルがあります。エンティティ マネージャには、テーブルと参照が登録されています。私の質問は、ルックアップ テーブルにレコードを追加する前に、最初にグループを作成する必要がありますか? 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();
};
4

1 に答える 1

0

あなたがしていることで、私が気になる点を指摘したいと思います。あなたdataserviceはマネージャーを呼び出し元に公開しています。を持つ主な理由dataserviceは、EntityManager をカプセル化して、すべての呼び出し元から隠すことです。マネージャーを呼び出し元に公開するつもりなら、なぜデータサービスを気にする必要があるのでしょうか?

絶対的なルールはあまりありませんが、「データサービスから EntityManager を公開しない」という数少ないルールの 1 つを破っています。そのルールを緩和する必要はありませんでした。壊したことを後悔することを約束します。

あなたがしたいことは、データサービスにcreateGroupメソッドを公開させることだと思います。グループを作成するすべての作業は、 内に収める必要がありdataserviceます。

怒鳴り終わったので、実際の質問とコードを理解しようとしています。申し訳ありませんが、私はちょっと迷っています。manager.UserToGroup.push(a) EntityManager にはUserToGroupメンバーがなく、(b) Breeze API にはメソッドがないため、私は困惑していpushます。EntityManager キャッシュにエンティティを追加/アタッチするためのメソッドは確かにありません。

どの「テーブル」が「ルックアップ テーブル」なのかわかりません。データベースオブジェクトではなく、エンティティタイプとエンティティインスタンスについて実際に話しているように見えるので、とにかく「テーブル」と「レコード」という言葉に少し混乱しています。並列性は理解できますが、エンティティとエンティティがマップされるデータベース構造とを明確に区別する価値があります。

私の混乱の最後の告白:あなたの質問の主題は「複雑なエンティティ」に言及しています。Breezeには「複合型」という概念があります。私はそれがあなたが意味するものだとは思わない。あなたのエンティティが複雑であると信じているということだと思います。そうですか?

これはあなたの質問への答えに近づいていないように感じます...私にはまったく理解できません. 別のタイプのエンティティの前に、あるタイプのエンティティを作成する必要があるかどうかについてのようです。しかし、確信が持てません。

適切な回答を得る前に、質問を明確にする必要があると思います。

于 2013-11-01T07:03:52.040 に答える