0
DBML方案之一,我應該支持的基礎上配置參數數據庫兩個版本的應用程序。 問題是這些數據庫的表中的類型之間存在一些細微的差異。 例如,在舊數據庫中,該字段的類型爲tinyint
,現在爲smallint
。使用取決於參數
當我嘗試使用新的.dbml
文件,我得到一個可愛的InvalidCastException
試圖選擇什麼時候。
我需要用相同的表和列名,但不同類型的兩種不同的.dbml方案。 我想,以避免重複類似的代碼:
if (newDatabaseVersionFlag)
{
Data.DatabaseDataContext context = new Data.DatabaseDataContext(connectionString);
Data.Something item = context.Somethings.SingleOrDefault(e => e.Id == id);
item.Sth = (short)5;
item.Sth2 = "sample code";
}
else
{
Data2.DatabaseDataContext context2 = new Data2.DatabaseDataContext(connectionString);
Data2.Something item2 = context2.Somethings.SingleOrDefault(e => e.Id == id);
item2.Sth = (byte)5;
item2.Sth2 = "sample code";
}
而且還有很多比這更多的代碼...
是什麼讓它整潔的最佳方式?
我試圖做同樣的事情,但失敗了'Data.DatabaseContext.Something'來自不同類'Data2.DatabaseContext.Something',所以我不能將它們分配給一個公共變量。我使用的是.NET 3.5,因此這裏沒有'dynamic'關鍵字 – Adassko 2014-09-25 08:31:25
是不同類型的類嗎?他們有 – Traci 2014-09-25 08:34:19
他們如果剛纔編輯我的代碼,以反映System.Data.Linq.DataContext會自動'MSLinqToSQLGenerator'工具 – Adassko 2014-09-25 08:38:42