Проблема с EF4, SQLite, TPT иерархией и пакетной вставкой - PullRequest
3 голосов
/ 04 апреля 2011

Я некоторое время боролся со следующей проблемой с использованием EF4 и поставщика SQLite ADO.NET:

У меня есть модель с иерархией TPT: есть абстрактная базовая сущность (Источник),затем дочерние сущности первого уровня (SingleSource и MultipleSource) и дочерние сущности 2-го уровня (например, FileSource в SingleSource).

В моем приложении я создаю объекты FileSource и добавляю их в свой контекст.Пока я вызываю context.SaveChanges () после каждой операции добавления нового FileSource, все работает нормально, но когда я добавляю несколько FileSources в свой контекст и затем вызываю SaveChanges один раз, чтобы сохранить их все, я получаю исключение обновления:

Невозможно определить основной конец отношения FK_Source_SingleSource_0.Несколько добавленных сущностей могут иметь один и тот же первичный ключ

Я заметил, что когда я создаю новые объекты FileSource, EF устанавливает их Id в 0 для всех из них, даже если это поле идентификации (StoreGeneratedPattern = Identityкак на SSDL, так и на CSDL), и я подозреваю, что это является причиной его отказа, но я пока не смог найти никакого решения, поэтому любая помощь будет принята с благодарностью.

Спасибо,

Симон

...