У меня есть веб-сайт MVC в NET Core 3.1 с использованием Entity Framework 3.1.6. Моя проблема в том, что одна из моих сущностей теперь выдает ошибку:
System.ArgumentException: элемент с таким же ключом уже был добавлен. Ключ: Assessor
До недавнего времени он работал нормально, и я не уверен, что изменилось.
Модель
public class FacilityQCResult
{
[Key]
public int ID { get; set; }
public Guid? QCID { get; set; }
public string QCSeverity { get; set; }
public string QCType { get; set; }
public string QCShortName { get; set; }
public string Resolution { get; set; }
public string Base { get; set; }
public string FacilityNumber { get; set; }
public string FacilityName { get; set; }
public DateTime? DataEntryComplete { get; set; }
public string TeamAssignment { get; set; }
public string Assessor { get; set; }
public string TripWeek { get; set; }
public string Details { get; set; }
public Guid? FacilityID { get; set; }
}
Контекст
public partial class SQLDBContext : DbContext
{
public SQLDBContext()
{
}
public SQLDBContext(DbContextOptions<SQLDBContext> options)
: base(options)
{
}
public virtual DbSet<FacilityQCResult> FacilityQCResults { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<FacilityQCResult>(entity =>
{
entity.ToTable("FacilityQCResult");
entity.HasKey(e => e.ID);
entity.Property(e => e.DataEntryComplete)
.HasColumnName("Data_Entry_Complete")
.HasColumnType("datetime");
entity.Property(e => e.TeamAssignment)
.HasColumnName("Team_Assignment")
.HasMaxLength(100)
.IsUnicode(false);
entity.Property(e => e.TripWeek)
.HasColumnName("Trip_Week")
.HasMaxLength(10)
.IsUnicode(false);
});
}
}
Структура таблицы
введите описание изображения здесь
Выдает ошибку при переходе к следующей строке:
var result = await context.FacilityQCResults.FromSqlRaw(" exec [dbo].[pr_ExecuteFacilityQCRules]").ToListAsync();
Хранимая процедура выполняет некоторые другие действия и выводит строки данных, моделирующих структуру таблицы. Забавно то, что у меня есть еще один объект, который настроен аналогично и работает без проблем. До недавнего времени казалось, что это работало, но я не уверен, когда именно это началось и почему, поскольку я не менял структуру объекта или таблицы. По сути, EF Core считает, что столбец Assessor является ключевым, хотя я этого не уточнял. Как это происходит и как мне сказать, что это не ключ?