类设计:实体ID与实体引用

时间:2009-02-02 22:48:38

标签: language-agnostic class-design

如果我有一个Bar类型的Foo。两者都保存在一个可以通过ID检索的数据库中。 (这些ID实际上是通过客户服务索赔在业务线中使用的。所以它们不仅仅是索引占位符。)我可以采用b1或b2所示的方法。

链接实体一起吓到我,因为如果你推得太远,很容易让Null突然爆发。另一方面,身份证出现在各地似乎都在增加不必要的冗长。

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

注意:这不是.NET实体框架。在一般意义上,这里使用的单词实体。

2 个答案:

答案 0 :(得分:1)

作为一般规则,我尽量避免链接,因为它通常会引入不必要的紧耦合。所有这些都取决于上下文,但就业务对象而言,保持实体松散耦合以便它们可以独立发展可能是一个好主意。

在您提供的示例中,我不认为紧密耦合是有保证的。如果交叉点更大,这可能是有保证的,但我发现这不是商业实体的一般情况。

答案 1 :(得分:0)

看看MSFT实现LINQ to SQL的方式。他们让你设置/或。他们的映射器非常智能,可以根据需要公开属性和延迟加载。 IMO你应该以最简单的方式(使用ID)或使用O / R映射器,如Hibernate / NHibernate,Linq to SQL,或Linq to Entities,如果你想要好看。