2008-10-31 39 views
2

我在項目上使用.NET類型化數據集,而且經常遇到這種情況,我需要從多個表中預取數據到數據集中,然後將該數據集傳遞給多種方法處理。讓每個方法準確地確定需要哪些數據然後加載數據本身似乎更清晰。但是,有幾種方法可以處理相同的數據,我只希望一次性加載數據的性能優勢。使用.NET類型化數據集管理數據預取和依存關係

我的問題是,我不知道用於管理依賴關係的好方法或模式(我想確保我加載了每個將使用的類/方法所需的所有數據數據集)。目前,我最終只是查看將使用數據集的各個類的代碼,以確保我正確地加載了所有內容。

在這種情況下使用什麼好方法或模式?我在做一些根本性錯誤?儘管我使用的是類型化數據集,但這似乎是使用預取數據的常見情況。

謝謝!

回答

1

我認爲你正在尋找的「模式」可能只是延遲加載或延遲加載。您的類型化數據集可以具有所有您的方法或類都需要的結構,但只有當某些方法/類嘗試訪問某些數據的某部分時纔會填充數據。

一個很好的例子是名字和地址。您可能有一個名稱列表,每個名稱可能有多個地址。不需要訪問地址的方法/類不會導致地址加載。但只要任何方法或類嘗試訪問給定名稱的地址,就會加載該名稱的地址。任何後續使用該名稱的地址都會查找已加載的數據。

在類型化的數據集中實現這將是一個相當手動的過程。 (並且每次我使用類型化數據集時,我都會越來越討厭它們)。您可能希望查看LINQ to SQL,因爲此功能是內置的。還有其他類似的框架也具有此內置功能。

1

您可以使用類似於Composite模式的東西,其中每個類都會添加一些數據要求,然後預取數據,然後處理數據。

在UsedClasses每個類

DataSet.AddRequirement(Class.Requirements)

DataSet.Prefetch

在UsedClasses

Class.Process(數據集)

每個類