Dapper InsertAsyn c<T> не вставляет записи - PullRequest
0 голосов
/ 22 февраля 2020

Вот вершина POCO, которую я использую для создания объекта для установки в мою таблицу базы данных под названием «LOCITEMS»:

[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;
        }
    }

Когда я проверяю переменную x, она всегда равна 0, и никакие записи не вставляются в мою таблицу. Это часть транзакции, и транзакция фиксируется, но запись не отображается. Я добавил «ExplicitKey» в столбцы составного ключа для таблицы в соответствии с другими предложениями, но я все еще не получаю вставку и не получаю никаких ошибок в «catch». Что я делаю не так?

1 Ответ

0 голосов
/ 24 февраля 2020

Я запустил трассировку SQL из SSMS и смог перехватить операторы sql. Копаясь в утверждениях, я обнаружил, что одно из полей POCO было строкой вместо DateTime и вызывало проблемы. Я изменил тип поля, перезапустил его и вставил. Я не знаю, почему это не выдает ошибку несоответствия.

...