奧姆斯往往映射一個一對多的關係,如:庫模式,奧姆斯和getter和setter
class Parent {
IList<Child> Children { get; set; }
}
的問題是,在倉庫中,你可能有:
GetChildrenOfParent(int parentID) {
from c in Children...
return children;
}
你現在有兩個地方可以「得到」孩子。當你想添加的東西,比如也許只有回到孩子誰沒有刪除標誌,你可能有:
GetChildrenOfParent(int parentID) {
from c in Children..
where not deleted
return children;
}
或
class Parent {
IList<Child> Children { get .... only get not deleted children; set; }
}
你明白我的意思嗎?您現在有兩個地方可以選擇執行吸氣器程序。看來,有該程序的合理位置是在倉庫中,但是這意味着:
foreach (var child in parent.Children)
不通過你的「吸」去了,因此具有一個一對多的ORM的整體思路這種方式映射似乎是錯誤的?
如果你做了list = parent.children.where ...你在你的例子中使用過,想象一下當你在這個地方有數百個這樣的調用會發生什麼,現在你想改變它到x.deleted && x.age <18。getter或repository方法的意義在於,您只能在一個地方更改它,並且不會破壞任何合同。 – BobTurbo
準確地說,這就是爲什麼我說我寧願保持清潔並將其放入自己的存儲庫方法。如果你知道我確實不確定你在問什麼,但是我回到我原來的建議,那麼選擇適合你和你的應用的東西,不要因爲你對'最佳實踐'的解釋而陷入困境你是'正確'或'錯誤'。從個人經驗來看,試圖嚴格遵守某些認爲「正確」或「錯誤」的結果會導致主要方式放慢進度,或者導致代碼過載。 – lloydphillips
如果您需要在多個地方使用過濾的查詢,那麼爲其創建特定方法以幫助代碼維護絕對有意義。無論您是否將這些結果作爲課堂上的財產訪問,都歸結爲個人選擇您想要如何建模域的方式。 – lloydphillips