以 OracleDAL / SqlServerDAL 為例:
Data.DAL、Insert(IModel))。DAL.OracleDAL.dll、DAL.SqlServerDAL.dll。DAL.dll 定義共用介面與基底實作。DAL.OracleDAL.dll、DAL.SqlServerDAL.dll 參考 DAL.dll 並實作介面。| 方式 | 切換動作 |
|---|---|
| 反射 | 修改連線字串 + 修改配置檔指定當前資料庫 |
| 標準+冗餘 | 修改連線字串 + 替換 DLL |
namespace Data
{
// public class OracleDAL → 改為
public class DAL
{
public void Insert(IModel model)
{
OracleCommand cmd = new OracleCommand("connectionstring");
cmd.CommandText = "Insert into test(column1,column2) values (@column1,@column2)";
cmd.ExecuteNonQuery();
}
}
}
SqlServerDAL 同理,唯連線/命令物件不同。編譯出兩組 DLL,部署時擇一放入 Bin 目錄。