Я предполагаю, что ваш
public class Product
{
public int Id{get;set;}
Идентификатор по умолчанию равен нулю.
Так что ваш второй .Add / SaveChanges причиняет вам боль.
попробуйте это :
var product = new Product(Id = 111, UnitOfMeasureId = 1, SaleUnitOfMeasureId = 1);
и
var otherProduct = new Product(Id = 222 ,UnitOfMeasureId = 1, SaleUnitOfMeasureId =1);
и попробуйте еще раз (вы сохраняете большую часть того же кода, но внесите 2 вышеуказанных изменения)
Если это не так работать.
Go к вашей базе данных и к вашей таблице в SSMS. (Sql Server Management Studio) ..
Найдите ограничение: (перебирая объекты под столом)
IX_Products_PurchaseUnitId
Щелкните правой кнопкой мыши и выполните
«Ключ скрипта (или ограничение)» / «Создать в» / «Буфер обмена»
и вставьте его в исходный вопрос. Это поможет выяснить проблему довольно быстро.
Если у вас нет доступа к базе данных, вам придется «поиграться» со значениями, чтобы попытаться выяснить, из чего состоит индекс.
СОВЕТ, не используйте неоднозначные значения.
Попробуйте это: (повторите то же значение для SaleUnitOfMeasureId, иначе 444)
var product = new Product(UnitOfMeasureId = 333, SaleUnitOfMeasureId = 444);
и
var otherProduct = new Product(UnitOfMeasureId = 555, SaleUnitOfMeasureId =444);
затем попробуйте это:
Попробуйте это: (повторите то же значение для UnitOfMeasureId, он же 777)
var product = new Product(UnitOfMeasureId = 777, SaleUnitOfMeasureId = 888);
и
var otherProduct = new Product(UnitOfMeasureId = 777, SaleUnitOfMeasureId =999);