1

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

将实体链接在一起让我感到害怕,因为如果你把它推得太远,很容易让 Null 弹出。另一方面,让 ID 随处可见似乎增加了不必要的冗长。

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

注意:这与 .NET 实体框架无关。这里使用的词实体是一般意义上的。

4

2 回答 2

1

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

在您提供的示例中,我认为没有必要进行紧密耦合。如果交叉点更大,这可能是有道理的,但我发现这不是业务实体的一般情况。

于 2009-02-02T23:09:16.297 回答
0

看看 MSFT 实现 LINQ to SQL 的方式。他们让你设置非此即彼。他们的映射器足够聪明,可以根据需要公开属性和延迟加载。IMO 你应该采用最简单的方式(使用 ID)或使用 O/R 映射器,如 Hibernate/NHibernate、Linq to SQL 或 Linq to Entities,如果你想要花哨的话。

于 2009-02-02T22:51:12.170 回答