2009-02-02 61 views
1

如果我已將Foo與Bar類型的屬性相關聯。兩者都保存在可以通過ID檢索的數據庫中。 (這些ID實際上在客戶服務聲明中用於業務線,因此它們不僅僅是指數佔位符。)我可以採用b1或b2所示的方法。類設計:實體ID與實體參考

鏈接實體一起嚇倒我,因爲如果你推得太過分,很容易讓Null彈出。另一方面,讓身份證出現在任何地方似乎都會增加不必要的囉嗦。

int fooKey = 123; 
Foo f = new Foo(fooKey); 
Bar b1 = new Bar(Foo.BarID); //This? 
Bar b2 = Foo.Bar; // Or This? 

注意:這不是關於.NET實體框架。這個詞在整體意義上用於這裏。

回答

1

作爲一般規則,我儘量避免鏈接,因爲它通常會引入無意義的緊密耦合。所有都取決於上下文,但就業務對象而言,將實體保持鬆散耦合以便它們可以獨立增長可能是一個好主意。

在您提供的示例中,我不認爲緊密耦合是有保證的。如果交叉點更大,這可能是有保證的,但這不是商業實體的一般情況,我發現。

0

看看MSFT實現LINQ to SQL的方式。他們讓你設置/或。他們的映射器足夠聰明,可以根據需要公開屬性和延遲加載。國際海事組織你應該去最簡單的方式(使用ID)或使用像Hibernate/NHibernate的O/R映射器,Linq到SQL,或Linq到實體,如果你想fanciness。