我正在使用 Entity Framework 5 和 PostgreSQL DB 创建一个 .NET C# 应用程序。我使用npgsql 2.0.12 作为数据提供者和数据库优先方法。
首先,我使用edmgen创建模型文件(csdl、ssdl、mdl)和对象层,并将连接字符串作为参数连接到 postgresql db。
edmgen 在工作时会显示警告:
警告 6005:不支持数据类型 'money',表 'tablename' 中的列 'amount' 已排除。
然后一切正常,只是该列不包含在模型中。当然,我对此并不满意,因为我需要这个专栏。我不应该修改数据库结构。
所以,我所做的是我手动修改了模型文件——分别是 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,就像此表中的任何其他属性一样。
现在,当我运行应用程序时,我得到:
指定的架构无效。错误:类型 money 没有使用命名空间或别名进行限定。只有原始类型可以在没有限定的情况下使用。
那是谁的错?英孚?npgsql?edmgen?
我在pgfoundry.org/forum上找到了一些东西,但更改为数字对我没有帮助。 npgsql 的用户手册表明money 是受支持的类型。
我怎样才能使这个东西与货币类型的列一起使用?