我使用实体框架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中是否需要做什么来支持它。但是这个消息看起来很有希望,因为它说这个类型应该用一个名称空间或别名来限定。所以它可能只是一个配置问题。 –