Как заставить Dapper.Rainbow вставлять данные в таблицу с помощью AutoIncrement на SQLite?

Я создал образец таблицы на SQLite, в которой есть столбец идентификатора, который автоматически увеличивается.

CREATE TABLE "ESVLIntegration" ("Id" INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL  UNIQUE, "ProcessId" TEXT NOT NULL, "UserId" INTEGER NOT NULL, "Status" TEXT NOT NULL, "StartDate" DATETIME NOT NULL, "EndDate" DATETIME, "Operation" TEXT NOT NULL, "SNEquip" TEXT NOT NULL, "CardName" TEXT NOT NULL, "FilePath" TEXT NOT NULL, "Processed" BOOL NOT NULL )

Но когда я пытаюсь вставить во второй раз, я получаю следующую ошибку:

Abort due to constraint violation PRIMARY KEY must be unique

Это мой код

public class ESVLIntegration
{
    public long Id { get; set; }
    public String ProcessId { get; set; }
    public long UserId { get; set; }
    public String Status { get; set; }
    public DateTime StartDate { get; set; }
    public DateTime EndDate { get; set; }
    public String Operation { get; set; }
    public String SNEquip { get; set; }
    public String CardName { get; set; }
    public String FilePath { get; set; }
    public Boolean Processed { get; set; }
}

public class Sample : Database<Sample>
{
    public Table<ESVLIntegration> ESVLIntegration { get; set; }
}

private void WriteParameters()
{
    "Writing sample parameters to SQLite DB".LogDebug();
    var pars = new ESVLIntegration();
    pars.ProcessId = Guid.NewGuid().ToString();
    pars.CardName = "gpp3";
    pars.StartDate = DateTime.Now;
    pars.Status = "Start";
    pars.Operation = VerifyStatus;
    pars.SNEquip = "12345";
    pars.FilePath = @"C:\Folder\FilePath";
    pars.Processed = false;
    using (var conn = new SQLiteConnection(connStr))
    {
       conn.Open();
       var db = Sample.Init(conn, 2);
       db.ESVLIntegration.Insert(pars);
    }
}

Любые идеи о том, что я делаю неправильно здесь?

РЕДАКТИРОВАТЬ

Столбцы INTEGER в SQlite имеют тип int64 (long )

-. 121 ---1893743- Почему/как NSUInteger может возвращать ОТРИЦАТЕЛЬНОЕ число? Какой смысл иметь отдельный беззнаковый тип, он же NSUInteger, если нет ни гарантии (, ни даже, кажется, шанса ), который вы можете предположить, поставить на кон свой последний доллар или плакать, чтобы уснуть..

Какой смысл иметь отдельный беззнаковый тип, он же NSUInteger, если естьникакой гарантии (и даже, кажется, шанса)что вы можете предположить, сделать ставку на последний доллар или плакать до сна из-за-что имя подразумевает -неотрицательный по своей сути результат .

NSUInteger normal = 5;
NSUInteger freaky = normal - 55;
NSLog(@"%ld, %ld", normal, freaky);

НСЛОГ5, -50

Конечно, я могу из кожи вон лезть, пытаясь получить ноль, или какое-то нормализованное значение…

NSUInteger nonNeg = (((normal - 55) >= 0) ? (normal - 55) : 0);

ПАРАЛЕЛЬВСЕЛЕННАЯ5, -50

Но тут компилятор жалуется.. правильно, чтоcomparison of unsigned expression >= 0 is always true-и вот он, ответ, которого я не хотел/ожидал. Кто-нибудь ударьте меня по лицу, дайте выпить, скажите, какой сейчас год.. или еще лучше … как это сделать -вы знаете -нет делайте это .

5
задан Alex Gray 2 August 2012 в 05:48
поделиться