我将通过以下方式满足您的要求:
首先,我会添加一些dbml
(Linq2SQL)文件,每个数据库一个。如果您愿意,可以使用 ADO.NET 或其他东西。你必须以不同的方式调用你生成的数据对象......像 MySqlDataObject、OracleDataObject、FirebirdDataObject 等。
在您的 UI 中,您只需要一组数据对象。因此,在您的数据层中,您将需要填充来自不同数据库的每个数据对象的方法......比如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;
}
}