Я просто заново изучаю SQLServer после многих лет использования .Net с другими базами данных.
Я использую Microsoft.EntityFrameworkCore;
У меня есть база данных с 1 таблицей в SQLServer. Из этой таблицы я использовал Entity Framework для генерации модели. Таблица имеет как первичный ключ (автоинкремент), так и уникальный ключ (естественный ключ в трех столбцах таблицы).
Модель, сгенерированная EF, сгенерировала код для индекса уникального ключа:
entity.HasIndex(e => new { e.Col1, e.Col2, e.Col3})
.HasName("MyTable_UK")
.IsUnique();
Я добавляю несколько строк в DbSet, используя: db.MyTable.Add (myRow); без немедленного вызова SaveChanges.
Я ожидал db.MyTable.Add (myRow); бросить исключение, когда уникальный индекс был нарушен. Это не; это позволяет дублировать строки в DbSet. Когда я сохраняю изменения в базе данных, в качестве исключения я получаю нарушение в Великобритании.
Есть ли способ заставить это вызвать исключение, прежде чем я вызову SaveChanges? Кажется, что для этого есть вся необходимая информация.