c# - 业务对象(在层次结构中)之间的循环引用是否常见?

标签 c# .net linq-to-sql parent-child

Linq-to-Sql 类既为父级提供了对子集合的引用,也为子级提供了对父级(单个或集合)的引用。这允许一个人在两个方向“钻”,而且看起来很方便。

这种设计是否也适用于手动创建的业务对象(PO​​CO 或其他)?以防万一;建议这样做的优点/缺点或具体情况是什么?


编辑1:

我主要考虑逻辑驱动的行为;意思不是用户交互,而是像处理金融交易、游戏软件等的程序。如果你处理一个子实体,然后需要它的父实体的一些参数怎么办。这看起来很方便,但也许是我编码实践的其他部分才是问题所在,让我觉得我需要这个……

最佳答案

不确定这是否真的是您正在寻找的答案,但这是我的 2 美分。

循环引用是一种可怕的数据库设计,应该不惜一切代价避免。

它几乎不可能系统地插入和删除成批的记录,因为操作的顺序无法事先确定并且高度依赖于记录中包含的数据。

这方面的一个例子是这样的:

class Company
{
  Person ContactPerson {get;set;}
}

class Person 
{
  Company Company {get;set;}
}

在处理数据库时,您确实遇到了 22(或鸡蛋问题)情况。

然而,在代码中处理它并不是什么大问题。

关于c# - 业务对象(在层次结构中)之间的循环引用是否常见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4813954/

相关文章:

c# - Ranorex 测试自动化问题 : Unable to reliably click a button on silverlight web app

c# - 静态 XML 的缓存问题

.net - Google云端硬盘-无法下载经过身份验证(OAuth2)请求的缩略图

c# - 如何更新List中item的索引?

.net - 从 System.DirectoryServices 切换到 DirectoryServices.Protocols 时的身份验证类型

c# - Linq 查询适用于 null 但不适用于 int?在 where 子句中

sql - 在 SQL Server 2014 中写入基础表后立即查询 View

C#:LINQ to SQL:执行文字查询

c# - 通过算法从用户 ID 生成唯一的随机好友代码

c# - Array#Contain 与 OR 逻辑与 switch 语句的性能