私は次の方法であなたの要件を達成します:
まず、dbml
データベースごとに 1 つずつ、多数の (Linq2SQL) ファイルを追加します。必要に応じて、ADO.NET などを使用できます。生成されたデータ オブジェクトを別の方法で呼び出す必要があります... MySqlDataObject、OracleDataObject、FirebirdDataObject などのようなものです。
UI では、1 セットのデータ オブジェクトのみが必要です。したがって、データ層では、さまざまなデータベースから各データ オブジェクトを埋めるメソッドが必要になります... CopyToMySqlDataObject(ClrDataObject clrDataObject)
、CopyToOracleDataObject(ClrDataObject clrDataObject)
、CopyToFirebirdDataObject(ClrDataObject clrDataObject)
.
最後に、DataProvider
すべてのデータ ソース オブジェクトを参照するクラスを使用します。このクラスは、利用可能な各アクションをホストし、各メソッドですべてのデータ ソースを呼び出します。次の例を見てください。
public int UpdateDataObject(ClrDataObject clrDataObject)
{
using (MySqlDataContext dataContext = new MySqlDataContext())
{
MySqlDataObject mySqlDataObject = dataContext.MySqlDataObjects.Where(d =>
d.Id == clrDataObject.Id).FirstOrDefault();
CopyToMySqlDataObject(clrDataObject, mySqlDataObject);
dataContext.SubmitChanges(ConflictMode.FailOnFirstConflict);
return 0;
}
...
using (OracleDataContext dataContext = new OracleDataContext())
{
OracleDataObject oracleDataObject = dataContext.OracleDataObjects.Where(d =>
d.Id == clrDataObject.Id).FirstOrDefault();
CopyToOracleDataObject(clrDataObject, oracleDataObject);
dataContext.SubmitChanges(ConflictMode.FailOnFirstConflict);
return 0;
}
}