Sql server 使用petapoco将十进制插入数据库时出错

Sql server 使用petapoco将十进制插入数据库时出错,sql-server,decimal,sql-insert,petapoco,Sql Server,Decimal,Sql Insert,Petapoco,我在使用PetaPoco将十进制值插入数据库时遇到问题 在我的模型中,我有一个项目: [Column("Price")] public decimal PriceTotal { get; set; } 在数据库中,相关列Price的类型为decimal(18,2) 当我插入时: public void InsertModel(MyViewModel model) { _database.Insert(model); } 我得到一个错误: Sys

我在使用PetaPoco将十进制值插入数据库时遇到问题

在我的模型中,我有一个项目:

    [Column("Price")]
    public decimal PriceTotal { get; set; }
在数据库中,相关列
Price
的类型为
decimal(18,2)

当我插入时:

public void InsertModel(MyViewModel model)
    {
        _database.Insert(model);
    }
我得到一个错误:

System.InvalidCastException: 'Invalid cast from 'System.Decimal' to 'System.Nullable`1[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]'.'

不知道我还能怎么做?
decimal
是否转换为sql server的
decimal(18,2)

您可以使用此
decimal?

[Column("Price")]
public decimal? PriceTotal { get; set; }

你不需要翻译任何东西。你看到错误信息了吗?您正在尝试将一个十进制数保存或读入一个整型字段,并发布完整的异常,包括其调用堆栈、表模式和可复制的代码示例。可能您在数据库中将
ID
定义为
numeric(18,2)
,在类中将
int
定义为
,导致ORM试图检索自动生成的IDI时出错,该IDI写的正是我所写的。我不确定把我当作白痴是不是一个解决办法。这不是错误所在。在十进制数据库字段中存储数据不需要可为空的十进制。这不起作用-它只是在另一个整型字段上发现了一个错误,我不知道为什么它对decimal大喊大叫,而它与模型中唯一的decimal属性没有任何关系。