2008-10-31 37 views
2

我在项目上使用.NET类型化数据集,而且经常遇到这种情况,我需要从多个表中预取数据到数据集中,然后将该数据集传递给多种方法处理。让每个方法准确地确定需要哪些数据然后加载数据本身似乎更清晰。但是,有几种方法可以处理相同的数据,我只希望一次性加载数据的性能优势。使用.NET类型化数据集管理数据预取和依存关系

我的问题是,我不知道用于管理依赖关系的好方法或模式(我想确保我加载了每个将使用的类/方法所需的所有数据数据集)。目前,我最终只是查看将使用数据集的各个类的代码,以确保我正确地加载了所有内容。

在这种情况下使用什么好方法或模式?我在做一些根本性错误?尽管我使用的是类型化数据集,但这似乎是使用预取数据的常见情况。

谢谢!

回答

1

我认为你正在寻找的“模式”可能只是延迟加载或延迟加载。您的类型化数据集可以具有所有您的方法或类都需要的结构,但只有当某些方法/类尝试访问某些数据的某部分时才会填充数据。

一个很好的例子是名字和地址。您可能有一个名称列表,每个名称可能有多个地址。不需要访问地址的方法/类不会导致地址加载。但只要任何方法或类尝试访问给定名称的地址,就会加载该名称的地址。任何后续使用该名称的地址都会查找已加载的数据。

在类型化的数据集中实现这将是一个相当手动的过程。 (并且每次我使用类型化数据集时,我都会越来越讨厌它们)。您可能希望查看LINQ to SQL,因为此功能是内置的。还有其他类似的框架也具有此内置功能。

1

您可以使用类似于Composite模式的东西,其中每个类都会添加一些数据要求,然后预取数据,然后处理数据。

在UsedClasses每个类

DataSet.AddRequirement(Class.Requirements)

DataSet.Prefetch

在UsedClasses

Class.Process(数据集)

每个类