Linq-to-Sql 类既为父级提供了对子集合的引用,也为子级提供了对父级(单个或集合)的引用。这允许一个人在两个方向“钻”,而且看起来很方便。
这种设计是否也适用于手动创建的业务对象(POCO 或其他)?以防万一;建议这样做的优点/缺点或具体情况是什么?
编辑1:
我主要考虑逻辑驱动的行为;意思不是用户交互,而是像处理金融交易、游戏软件等的程序。如果你处理一个子实体,然后需要它的父实体的一些参数怎么办。这看起来很方便,但也许是我编码实践的其他部分才是问题所在,让我觉得我需要这个……
最佳答案
不确定这是否真的是您正在寻找的答案,但这是我的 2 美分。
循环引用是一种可怕的数据库设计,应该不惜一切代价避免。
它几乎不可能系统地插入和删除成批的记录,因为操作的顺序无法事先确定并且高度依赖于记录中包含的数据。
这方面的一个例子是这样的:
class Company
{
Person ContactPerson {get;set;}
}
class Person
{
Company Company {get;set;}
}
在处理数据库时,您确实遇到了 22(或鸡蛋问题)情况。
然而,在代码中处理它并不是什么大问题。
关于c# - 业务对象(在层次结构中)之间的循环引用是否常见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4813954/