2013-10-31 59 views
0

我是Angular和Breeze的新手。我正試圖與客戶關係同時創建一個新的團隊。我的數據庫結構有3個表影響組,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(); 
}; 

回答

0

我想指出的是,你這樣做我發現令人擔憂的事情:你的dataservice暴露經理到其調用者。具有 a dataservice的關鍵原因是封裝EntityManager ...以將其從所有呼叫者中隱藏。如果你打算把經理公開給調用者,爲什麼還要打擾數據服務呢?

我沒有很多絕對的規則,但你已經打破了幾下,即一個「從來沒有從DataService在暴露的EntityManager。」我從來沒有放鬆這一規則。我向你保證,你會後悔打破它。

我想你想要做的是讓你的dataservice公開一個createGroup方法。所有創建組的工作都應該放在dataservice的內部。

現在,我已經完成了咆哮,我試圖理解你的實際問題和你的代碼。我很抱歉,但我有點迷路。因爲(a)EntityManager沒有UserToGroup成員和(b)Breeze API中沒有push方法......當然沒有像添加/附加實體到EntityManager緩存那樣的東西。

我不知道你的哪個「表」是「查找表」。無論如何,我對「table」和「record」這兩個詞感到困惑,因爲你似乎真的在談論實體類型和實體實例,而不是數據庫對象。我得到了並行性,但值得在實體和映射到的數據庫結構之間保持明確的區別。

我的困惑最後的表白:你的問題主題是指「複雜的實體」。微風有一個名爲「複雜類型」的概念。我不認爲這就是你的意思。我認爲你的意思是你相信你的實體很複雜。是對的嗎?

我感覺這些都沒有越來越接近你的問題的答案......我不能相當明白。這似乎是關於您是否必須在不同類型之前創建一種類型的實體。但我無法確定。

我想你必須澄清你的問題,然後才能得到正確的答案。