Это моя модель:Entity Framework с составным ключом: Нарушение ограничения PRIMARY KEY
[Key, Column(Order=1)] // composite key with ExternalId. WebshopId+ExternalId must be unique
[ForeignKey("Webshop_Id")]
public virtual Webshop WebshopEntity
{
get { return _Webshop; }
set { _Webshop = value; }
}
[NotMapped]
private Webshop _Webshop;
public int Webshop_Id { get; set; }
[Key, Column(Order = 2)]
[MinLength(1, ErrorMessage = "ExternalId must be atleast 1 character")]
public virtual string ExternalId { get; set; }
Product
должен иметь составной первичный ключ Webshop (его родители) и ExternalId
.
Теперь, когда моя база данных заполнена, я добавляю новый Product
с тем же ExternalId
, но другой Webshop
в качестве родителя. Это вызывает следующую ошибку:
Violation of PRIMARY KEY constraint 'PK_dbo.Products'. Cannot insert duplicate key in object 'dbo.Products'. The duplicate key value is (110).
Что я делаю неправильно? (с использованием EF6)
Можете ли вы разместить DDL SQL вашей таблицы dbo.Products? – gabba
Попробуйте определить [Key] на Webshop_Id вместо WebshopEntity. –
Ну, это была проблема, [Key] на Webshop_id сделал трюк. В определении таблицы теперь отображается CONSTRAINT [PK_dbo.Products] PRIMARY KEY CLUSTERED ([Webshop_Id] ASC, [ExternalId] ASC), , а до этого изменения отсутствовала часть Webshop_Id ASC. Спасибо! (отправьте его как ответ, если хотите) –