Устранить ошибку «Невозможно отследить объект»C#

Место общения программистов C#
Ответить
Anonymous
 Устранить ошибку «Невозможно отследить объект»

Сообщение Anonymous »

Объекты Defectmelmaster и Defectmeleffectivity имеют один и тот же первичный ключ.
После формирования списков я хотел бы вставить эти отдельные списки для Defectmelmaster и дефектмелеффективность.
Однако после того, как дефектмельмастер AddRangeAsync завершается успешно, дефектмелеффективность AddRange выдает ошибка:

Невозможно отследить объект, поскольку тот же экземпляр...

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

Service.cs
— здесь формируются списки и вызываются методы вставки репозитория:

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

foreach (var val in entities)
{
var defectMelMasterQuery = FormatDefectMelMasterQuery(val, userRegisterId);
var defectMelEffectivityQuery = FormatDefectMelEffectivityQuery(val, userRegisterId);
}

defectMelMasterQueryList.Add(defectMelMasterQuery);
defectMelEffectivityQueryList.Add(defectMelEffectivityQuery);

await _defectMelMasterRepository.InsertDefectMelMaster(defectMelMasterQueryList, cancellationToken);
await _defectMelEffectivityRepo.InsertDefectMelEffectivity(defectMelEffectivityQueryList, cancellationToken); //throws the error

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

DefectMelEffectivityRepo.cs
— здесь вызывается AddRangeAsync и выдается ошибка:

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

//DefectMelEffectivityRepo

await _dbContext.Set().
AddRangeAsync(defectMelEffectivityQueryList, cancellationToken);

await _dbContext.SaveChangesAsync(cancellationToken);
Класс сущности Defectmeleffectivityentity.cs:

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

public void Configure(EntityTypeBuilder builder)
{
builder.ToTable("DEFECT_MEL_EFFECTIVITY", schema: "XXX");

builder.Ignore(x => x.Id);

builder.HasKey(f => new {f.AcType, f.AcSeries,
f.MelNumber, f.MelSub, f.Ac, f.Company});
}
Класс сущности Defectmelmasterentity.cs:

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

public void Configure(EntityTypeBuilder builder)
{
builder.ToTable("DEFECT_MEL_MASTER", schema: "XXX");
builder.Ignore(x => x.Id);
builder.HasKey(f => new {f.AcType, f.AcSeries,
f.MelNumber, f.MelSub, f.Company});
}
Как это решить?

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

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

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

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

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

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