我正在考慮使用EF訪問安裝在客戶系統上的傳統SQL Server數據庫。實體框架是否支持模型中的不同數據類型?
問題是數據庫模式不是100%一致的:雖然它們都具有相同的(相關的)表和字段,但某些數字字段可能具有不同的數據類型。
就我所見,從應用程序的角度來看,類型是「兼容的」:例如,一個包含小數字的字段可能是客戶A的數據庫上的smallint
,但是客戶B的數據庫上的int
或包含價格的字段可能是A的數據庫上的decimal(10,2)
,而B的數據庫上是float
(是的,這意味着B可能遭受損失從浮點問題 - 畢竟這是一個遺留數據庫)。
因爲我們不是唯一訪問數據庫的人,所以更改(並因此統一)模式不是一種選擇。實體框架是否能夠應對這種情況(即,如果模型定義聲明它是decimal(10,2)
,它會優雅地接受SQL Server表中的double
)還是會崩潰?
您是否嘗試過測試:在具有這些差異的幾個測試數據庫中指向相同的模型?記住這些數據可能會有所作爲(例如,小數部分的小數值可能會起作用,而小數部分的小數部分則會失效)。 – Richard
@理查德:還沒有,如果沒有人能提供權威的答案,那就是我計劃要做的事。如果我測試它並且它可以正常工作,我仍然不知道它是否「應該這樣工作」,或者它「由於EF的一些實現細節而巧合工作」。 – Heinzi
確實,「看起來有效」的結果不是確定的(但你也不會在這裏得到)。然而,「它不起作用」的結果將是。因此,您可以提出真正的問題:在這種情況下如何適應/使用EF(因爲不管「官方」職位是什麼,所有可能的映射都會自動支持,因此您需要該問題)。 – Richard