EF CORE: Как изменить собственную коллекцию на сущности - PullRequest
0 голосов
/ 31 марта 2020

У меня есть сущность "MyEntity" со списком владельцев. Каждый объект-владелец имеет 3 свойства - Id, type, link. В конфигурации я сопоставляю этот объект как собственный.

builder.OwnsMany(a => a.Owner, ownershipBuilder =>
        {
            ownershipBuilder.HasKey(x => x.Link);
            ownershipBuilder.Property(x => x.Id).IsRequired();
            ownershipBuilder.Property(x => x.Type)
                .HasConversion(t => t.ToString(),
                value => (MyType) Enum.Parse(typeof(MyType), value))
                .IsRequired();
        });

Теперь, когда я пытаюсь обновить эту коллекцию владельцев, я получаю DbUpdateConcurrencyException

Поток обновления:

  1. поиск родительского объекта по его идентификатору
  2. добавление владельца в список
  3. вызов метода обновления для dbContext и SaveChanges.

После вызова savechanges я получил упомянутое исключение.

Есть идеи?

THX.

1 Ответ

0 голосов
/ 02 апреля 2020

Я решил,

Я генерирую Link (владелец) в коде, и это также ключ в таблице. Таким образом, я должен использовать ValueGeneratedNever в конфигурации объекта.

ownershipBuilder.Property(x => x.Link).ValueGeneratedNever().IsRequired();

Проблема решена.

...