0

这是我用来创建要安装到名为“LOCITEMS”的数据库表中的对象的 POCO 的顶部:

[Table ("LOCITEMS")]
public class LOCITEMS :ICloneable
{
    [ExplicitKey]
    public string LOCATIONID { get; set; }

    public string SITE_ID { get; set; }
    [ExplicitKey]
    public string ASCITEMID { get; set; }

    public string ITEMID { get; set; }
    [ExplicitKey]
    public string SKIDID { get; set; }

    public decimal QTYTOTAL { get; set; }
    ...

这是我用来将记录插入该表的代码:

private async Task<bool>InsertNewLocItem(LOCITEMS item, IDbConnection conn,  IDbTransaction trans )
    {
        if(item != null)
        {
           try
            {
                var x = await conn.InsertAsync<LOCITEMS>(item,trans);

                return true;
            }
            catch (Exception ex)
            {
                return false;
            }

        }
        else
        {
            return false;
        }
    }

当我检查 var x 它总是 0 并且没有记录被插入到我的表中。这是事务的一部分,事务正在提交,但记录未显示。我根据其他建议在表的复合键列上添加了“ExplicitKey”,但我仍然没有得到插入,也没有在“catch”中得到任何错误。我究竟做错了什么?

4

1 回答 1

1

我最终从 SSMS 运行 SQL Trace 并能够拦截 sql 语句。深入研究这些语句,我发现其中一个 POCO 字段是字符串而不是 DateTime 并且导致了问题。我更改了字段类型并重新运行它并插入了它。我不知道为什么它没有在不匹配时引发错误。

于 2020-02-24T20:43:47.267 回答