EF Core не может вставить запись, но ручная вставка добивается успехаC#

Место общения программистов C#
Anonymous
EF Core не может вставить запись, но ручная вставка добивается успеха

Сообщение Anonymous »

У меня есть база данных SQLite со следующей таблицей: < /p>

Код: Выделить всё

CREATE TABLE "Orders"
(
"ID"          INTEGER NOT NULL,
"Title"       TEXT NOT NULL,
"Description" TEXT,
"Price"       REAL NOT NULL,
"WarehouseID" INTEGER NOT NULL,
"Category"    TEXT,

FOREIGN KEY("WarehouseID")
REFERENCES "Warehouses"("ID")
ON DELETE CASCADE ON UPDATE CASCADE,
PRIMARY KEY("ID" AUTOINCREMENT),
UNIQUE("Title", "Description", "Price", "WarehouseID", "Category") ON CONFLICT IGNORE
)
Использование microsoft.entityframeworkcore.sqlite 9.0.2 У меня есть список Заказы , который я добавляю в контекст, как это:

Код: Выделить всё

public static void SaveOrders(IEnumerable orders)
{
dbContext.Orders.AddRange(orders);
dbContext.SaveChanges();
}
Приведенный выше метод называется несколько раз, его проводятся в списке заказов с примерно 100 членами каждый раз.
Существует множество заказов, которые необходимо обрабатывать/сохранены в базе данных. Изначально все работает нормально, и до 1310 года все записывается в базе данных без hussle.
Но тогда происходит что -то странное.
Я получаю dbupdateconconcurrencyException (без внутреннего исключения), потому что EF -ядро ожидалось, что это может повлиять на 1 ряд, но вместо 0 был затронут. Попытки вставить запись, которая нарушает уникальное конфликт игнорировать ограничение, так как SQLite просто игнорирует его, и 0 затронутых строк возвращаются, однако, если я запускаю команду вставки вручную (у меня включено журнал EF). Он вводит просто хорошо (добавляется новая запись).
Это командные ef -журналы, которые можно выполнить, чтобы выполнить «/p> p> p> p> p> prement
prement
Это командные ef -журналы, которые можно выполнить», чтобы выполнить «/p> p> p> p> prement » .

Код: Выделить всё

  Executing DbCommand [Parameters=[@p0='Sales, @p1='', @p2='24.90', @p3='16', @p4='iPhone XS 15 extra features camera, sleeve' (Size = 43)], CommandType='Text', CommandTimeout='30']
INSERT INTO "Orders" ("Category", "Description", "Price", "WarehouseID", "Title")
VALUES (@p0, @p1, @p2, @p3, @p4)
RETURNING "ID";
Итак, мой вопрос: почему EF Core не может вставить эту запись, и как я могу еще больше устранения устранения ее, чтобы узнать, почему.

Подробнее здесь: https://stackoverflow.com/questions/794 ... t-succeeds

Вернуться в «C#»