我最近重構了我的域模型以刪除由導航屬性導致的循環引用。這裏是域模型的基本結構:導航屬性並避免循環引用
- 用戶有很多遊戲
- 遊戲中有許多UserTeams
- 用戶有很多UserTeams
以前我曾在UserTeam模型導航屬性,用戶。
爲了避免循環引用(我在使用autofixture進行單元測試時遇到問題),我從UserTeam中刪除了User navigation屬性。
以前,在我看來,通過遊戲循環的時候,我能得到用戶的UserTeam像這樣:
foreach (game in games)
{
foreach (userteam in game)
{
userteam.User.UserName
}
}
現在,我不能這樣做(因爲用戶不再UserTeam的屬性)。
所以,現在我必須從視圖調用一個方法,就像GetUser(userteam.UserId)
。
與以前的結構相比,這似乎效率很低(必須對每個循環迭代進行數據訪問)。
有沒有更好的方法?
也許視圖模型可以幫到你嗎? – JLe
如何?看起來我需要一個新模型(viewmodel)來模仿舊模型(循環引用)和一套新的存儲庫方法......所以我只是迴避了循環引用問題...... 。 – jag
好吧,更好的方法是讓循環引用回到'User'。在你的模型中不一定有什麼不好的。你不能忽略自動混合中的屬性?我的意思是,如果你想知道UserTeam的用戶名,你需要用戶參考,這很簡單。使用視圖模型,您可以稍微扁平化,也可以直接將用戶名添加到UserTeam。 – JLe