我使用實體框架5和PostgreSQL數據庫創建一個.NET C#應用程序。我使用npgsql 2.0.12作爲數據提供者和數據庫優先的方法。實體框架與npgsql不會接受錢數據類型
首先,我創建了模型文件(csdl,ssdl,mdl)和使用edmgen的連接字符串作爲參數的postgresql db的對象層。
的edmgen顯示做時警告它的工作:
警告6005:數據類型「錢」不被支持,在表「表名」列「金額」被排除在外。
然後它一切正常,只是該列不包含在模型中。 當然,我不滿意,因爲我需要這個專欄。 我不應該修改數據庫結構。
所以,我所做的是我手工修改了模型文件 - CSDL,SSDL,MDL分別爲:
<Property Name="amount" Type="Decimal" Nullable="false" Precision="19" Scale="4" /> <Property Name="amount" Type="money" Nullable="false" /> <ScalarProperty Name="amount" ColumnName="amount" />
我還編輯了ObjectLayer加入這個屬性,就像任何其他的這張桌子。
現在,當我運行應用程序,我得到:指定
模式是無效的。錯誤:Type money沒有使用名稱空間或別名進行限定。只有原始類型可以不受限制地使用。
是誰的錯? EF? Npgsql的? edmgen?
我在pgfoundry.org/forum上發現了一些東西,但改爲數字不能幫助我。 User Manual npgsql表示money是受支持的類型。
如何使這件事情與錢型列工作?
我仍然不知道故障在哪裏。我注意到edmgen不支持任何自定義類型。我仍然需要弄清楚Npgsql中是否需要做什麼來支持它。但是這個消息看起來很有希望,因爲它說這個類型應該用一個名稱空間或別名來限定。所以它可能只是一個配置問題。 –