我在项目中使用.NET类型数据集,我经常遇到这样的情况:我将数据从几个表预取到数据集中,然后将该数据集传递给多个方法进行处理。让每个方法确切地确定它需要哪些数据然后加载数据本身似乎更清晰。但是,有些方法使用相同的数据,我希望只在开始时加载数据的性能优势。
我的问题是我不知道用于管理依赖项的好方法或模式(我想确保加载我将要使用的每个类/方法所需的所有数据数据集)。目前,我最终会查看将使用数据集的各种类的代码,以确保我正确地加载所有内容。
在这种情况下使用哪些好的方法或模式?我做了一些根本错误的事吗?虽然我正在使用类型化数据集,但这似乎是使用预取数据的常见情况。
谢谢!
答案 0 :(得分:1)
我认为您正在寻找的“模式”可能只是延迟加载或延迟加载。您的类型化数据集可以具有所有方法或类将需要的所有结构,但在某些方法/类尝试访问该数据的某个部分之前,数据不会被填充。
一个很好的例子是名称和地址。您可能有一个名称列表,每个名称可能有多个地址。不需要访问地址的方法/类不会导致地址加载。但是,只要任何方法或类尝试访问给定名称的地址,就会加载该名称的地址。任何后续使用该名称的地址都将找到已加载的数据。
在类型化数据集中实现此操作将是一个相当手动的过程。 (每次我使用类型化数据集时,我最终都会越来越多地讨厌它们。)您可能希望查看LINQ to SQL,因为内置了此功能。还有其他类似的框架也可以内置它。
答案 1 :(得分:1)
你可以使用类似于复合模式的东西,你可以让每个类添加一些数据要求,然后预取数据,然后处理数据。
对于UsedClasses中的每个类
DataSet.AddRequirement(Class.Requirements)
DataSet.Prefetch
对于UsedClasses中的每个类
Class.Process(数据集)