C# 复合模式和数据库访问

发布于 2024-08-09 01:12:52 字数 499 浏览 3 评论 0原文

假设我有一个复合类PharmaProduct(它代表制药公司的产品层次结构)和它的数据库表。我想到了两种将数据加载到 PharmaProduct 对象中的方法。

(1) 实例化对象时构造整个对象树。对树进行更改,并通过对树应用递归循环来保留这些更改(这实际上是 C# DataSet 的工作方式)。

(2)加载节点。 加载其他节点

PharmaProduct GetParent()

仅当调用或 时才

List<PharmaProduct> GetChldren()

(实际上执行直接数据库访问)。对节点进行更改。只保存该节点。

这种类型的表可能有一千个条目,具体取决于制药公司生产的产品类型。所以在这种情况下,我认为第一种方法会太笨拙(而且还消耗内存)。

如果出现任何复合模式问题,我实际上应该如何进行数据库访问?

Suppose I have a composite class PharmaProduct(which represents the product hierarchy of a pharmaceutical company) and a database table for it. I have thought two ways to load the data into a PharmaProduct object.

(1) Construct the entire object-tree when an object is instantiated. Make changes to the tree and persist those changes by applying recursive loop to the tree (This is actually the way C# DataSet works).

(2) Load a node. Load other nodes only if

PharmaProduct GetParent()

or,

List<PharmaProduct> GetChldren()

are called (which actually do the direct database access). Make change to the node. Only save that node.

This type of tables may have a thousand entries, depending on how many types of items a pharmaceutical company manufactures. So in that case, the 1st approach will be too clumsy (and also memory consuming) I think.

How should I actually do the database access in case of any Composite Pattern problem?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

如痴如狂 2024-08-16 01:12:52

看一下代理模式。使用它,您可以将 PharmaProductProxy 对象放入树中,这些对象具有与 PharmaProduct 相同的接口,但在访问它们时会延迟加载它们自己。

Take a look at the Proxy pattern. Using it, you would put PharmaProductProxy objects in the tree that have the same interface as PharmaProduct, but lazy load themselves when they are accessed.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文