214 похожих чатов

Здравствуйте! Подскажите, ПОЖАЛУЙСТА, по ef core: есть два класса (свойство Id

есть в BaseEntity):
public class DetailInfoEntity : BaseEntity<int>
{
public virtual List<GlassOptionEntity>? GlassOptions { get; set; }
}

public class GlassOptionEntity : BaseEntity<int>
{
public string? Name { get; set; }
public string? Description { get; set; }
[JsonIgnore] public virtual List<DetailInfoEntity>? DetailInfos { get; set; } = default!;
}
Можно ли сделать Insert в таблицу DetailInfoEntities, если указавать только id существующих GlassOptionEntity. Через сваггер пытаюсь передать такую DetailInfoDto:
{
"id": 0,
"glassOptions": [
{
"id": 1
}
]
}
Но база ругается, что я пытаюсь дублировать первичный ключ при вставке GlassOptionEntity. Как правильно указать, чтобы она привязывалась GlassOptionEntity с id=1, а не пыталась вставить новый. Отношения настроены
modelBuilder.Entity<DetailInfoEntity>().HasMany(x => x.GlassOptions).WithMany(x => x.DetailInfos).UsingEntity(j => j.ToTable("DetailInfoGlassOptionsRelation"));

3 ответов

4 просмотра

Аттачнуть существующую

Сестрица Алёнушка- Автор вопроса
Mishanya K.
Аттачнуть существующую

то есть сначала, запрос Find(id) - достаём существующую и вручную добавляем в List? Автоматом это не настраивается?

Сестрица Алёнушка
то есть сначала, запрос Find(id) - достаём сущест...

Нет, new сущности с известным Id, затем attach в контекст, тогда когда библа будет детектить изменения она не пометит её для добавления. Если я верно понял твою проблему. Дефолтную доку по трекингу efcore от мелкософта стоит заботать

Похожие вопросы

Обсуждают сегодня

Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
48
А чем вам питонисты не угодили?😂
.
79
type TObj = object procedure Init; virtual; end; TObj1 = object(TObj) procedure Init; override; end; procedure TObj1.Init; begin inherited; end; procedur...
Alexander 👋
29
Такой вопросец - есть функция function MySuperDuperConcat(const a: array of AnsiString): AnsiString; Как мне в её теле сделать вот так? Result:=Concat(a); А не грустный вариан...
notme
15
Всем привет. Поделитесь, пожалуйста, опытом. Есть форма, на которой имеется dbgrid и кнопки: добавить, редактировать, удалить. Если нет записей в dbgrid, то кнопки редактирова...
Евгений
5
type TExtensions<GExtender>=class function GetExtension<GEntityExtenderType>:GEntityExtenderType; end; function TExtensions<GExtender>.GetExtension<GEntityExtenderType...
zamtmn
8
Всем привет. Подскажите, почему не меняется значение поля при переключении сайта?
Alexander Peterikov
11
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
86
Всем привет, препод задал вопрос, подскажите пожалуйста, какой адрес инкапсулирует указатель?
Свинка Пеппа
7
Почему никто ещё не написал квантовую виртуальную машину на Windows?
КТ315
7
Карта сайта