ADO.NET對於各家DBMS的特殊性, 都有專門的Data Provider. 這是由於一般化的資料提供者模型所導致的, 抽象的提供者模型, 代表有相關的簽章存在, 使各家的Data Provider具象元件享有共通的特徵, 並且允許擴展更多獨特的機能.
.NET 2.0後, 引進了工廠(factory)設計, 大多的.NET Data Provider都包含繼承自DbProviderFactory的base-class. DbProviderFactory是針對資料提供者的提供者, 這個提供者包含了幾種資料物件產生的簽章. 例如:
1. CreateCommand
2. CreateCommandBuilder
3. CreateConnection
4. CreateDataAdapter
5. CreateParameter
那工廠物件要如何產生具象的資料提供者? 從如下所示來看:
DbProviderFactory dbProviderFactory;
dbProviderFactory=DbProviderFactories.GetFactory("System.Data.SqlClient");
可以看到一個極為重要的著眼點, 那就是GetFactory的靜態操作方法. 透過這個靜態操作方法傳入硬式編碼(hard-coded)的有效字串, 這個字串是被登入在相關的組態檔上. 該字串就是特有的對應命名空間.
用一個靜態操作來產生特定的具象提供者元件, 兩個關鍵點:
1. 一個針對提供者工廠的存在
2. 應用靜態操作產生資料提供者
這兩個關鍵點可以知道這是一個非常典型的Simple Factory應用.