2015-03-27 3 views
0

Это моя модель: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)

+0

Можете ли вы разместить DDL SQL вашей таблицы dbo.Products? – gabba

+4

Попробуйте определить [Key] на Webshop_Id вместо WebshopEntity. –

+0

Ну, это была проблема, [Key] на Webshop_id сделал трюк. В определении таблицы теперь отображается CONSTRAINT [PK_dbo.Products] PRIMARY KEY CLUSTERED ([Webshop_Id] ASC, [ExternalId] ASC), , а до этого изменения отсутствовала часть Webshop_Id ASC. Спасибо! (отправьте его как ответ, если хотите) –

ответ

1

Аннотацию [Key] следует указывать на Webshop_Id, а не на WebshopEntity.

Смежные вопросы