Оператор MERGE конфликтовал с ограничением FOREIGN KEY.C#

Место общения программистов C#
Ответить
Anonymous
 Оператор MERGE конфликтовал с ограничением FOREIGN KEY.

Сообщение Anonymous »

Я пытаюсь вставить данные EF Core в две таблицы, настроенные следующим образом:
[img]https:// i.sstatic.net/zzBiyR5n.png[/img]

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

QuantifiableRates
имеет PK идентификатора и версии и имеет отношение 1:1 (по крайней мере, то, что я пытаюсь сделать) с GlobalQuantifyingRates через GlobalQuantifyingRateId и GlobalQuantifyingRateRevision.
Тогда GlobalQuantifyingRate имеет отношение 1:1 с GlobalQuantifyingRateTypes.
Вот QuantifyingRate. Свободная настройка:

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

modelBuilder.Entity().Property(e => e.Id).HasDefaultValueSql("NEWID()")
.ValueGeneratedOnAdd();

modelBuilder.Entity().HasKey(e => new { e.Id, e.Revision });

modelBuilder.Entity().HasOne(e => e.GlobalQuantifiableRate).WithOne()
.HasForeignKey(e => new { e.GlobalQuantifiableRateId, e.GlobalQuantifiableRateRevision }).OnDelete(DeleteBehavior.Cascade);
И GlobalQuantifyingRate свободная конфигурация:

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

modelBuilder.Entity().HasKey(e => new { e.Id, e.Revision });
Выглядит правильно настроенным, чтобы отобразить плохо прорисованный UML, но EF Core выдает следующую ошибку при вставке данных:

Оператор MERGE конфликтовал с ограничением FOREIGN KEY
"FK_QuantifyingRates_GlobalQuantifyingRates_GlobalQuantifyingRateId_GlobalQuantifyingRateRevision

В результате миграции вот что EF Core создал для этого FK:

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

migrationBuilder.AddForeignKey(
name: "FK_QuantifiableRates_GlobalQuantifiableRates_GlobalQuantifiableRateId_GlobalQuantifiableRateRevision",
table: "QuantifiableRates",
columns: new[] { "GlobalQuantifiableRateId", "GlobalQuantifiableRateRevision" },
principalTable: "GlobalQuantifiableRates",
principalColumns: new[] { "Id", "Revision" },
onDelete: ReferentialAction.Cascade);
Что странно, так это то, что в SQL Server Mgmt Studio я могу нормально вставлять данные и соблюдаются ограничения уникальности PK/FK.
Я читал это это может быть связано с тем, что удаление данных EF Core несовместимо с моделью данных. Так ли это?
Что мне здесь не хватает?

Подробнее здесь: https://stackoverflow.com/questions/793 ... constraint
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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