gpt4 book ai didi

c# - 如何跟踪业务对象的变化?

转载 作者:太空狗 更新时间:2023-10-29 20:22:42 25 4
gpt4 key购买 nike

我得到了创建业务对象或实体来表示诸如人之类的东西的概念。然后我可以使用 DTO 序列化 Person 并将其发送给客户端。如果客户端更改对象,它可以有一个 IsDirty 标志,所以当它被发送回服务器时我知道要更新它。

但是如果我有一个 Order 对象呢?这有主要的标题信息、客户、供应商、所需日期等。然后它有 OrderItems,这是一个 List ,是要订购的项目。我希望能够在我的 UI 上使用这个业务对象。所以我有一些文本框连接到位置、供应商、所需日期等,还有一个网格连接到 OrderItems。由于 OrderItems 是一个列表,我可以轻松地向其中添加和删除记录。但是我如何跟踪这个,尤其是已删除的项目。我不希望删除的项目在我的网格中可见,如果我使用 foreach,我不应该能够迭代它们,因为它们已被删除。但我仍然需要跟踪存在删除的事实。我如何跟踪更改。我认为我需要使用一个工作单元?但是随后代码似乎变得相当复杂。那么我想知道为什么不简单地使用 DataTables 并免费获得更改跟踪?但后来我读到业务对象是如何走的路。

我在简单的 Person 示例中找到了各种示例,但不是像 Orders 这样的 header 详细信息示例。

顺便说一句,为此使用 C# 3.5。

最佳答案

首先,您可以使用解决这些问题的现有框架,例如 CSLA.NET。这个框架的作者已经解决了这些问题。转到 http://www.rockfordlhotka.net/cslanet/为了这。即使您不使用完整的框架,这些概念仍然适用。

如果您想推出自己的,我过去所做的是不使用 List 来创建我的集合,而是使用派生自 BindingList 的自定义类型。从 BindingList 继承允许您覆盖添加/删除项目的行为。因此,例如,您可以拥有另一个“已删除”项目的内部集合。每次在您的集合上调用覆盖的 Remove 方法时,将项目放入“已删除”集合,然后调用 Remove 方法的基本实现。您可以对添加的项目或更改的项目执行相同的操作。

关于c# - 如何跟踪业务对象的变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/80182/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com