У меня проблема с Entity Framework и ForeignKeys.
У меня есть таблица "BC_Message_Assets", которая имеет 3 FK (MessageId, AssetId и StatusId).
Я создаю свой «MessageAsset», как это
MessageAsset messageAsset = new MessageAsset();
messageAsset.MessageStatusReference.EntityKey = new EntityKey("MyEntities.MessageStatusSet", "Id", 1);
messageAsset.AssetReference.EntityKey = new EntityKey("MyEntities.AssetSet", "Id", 1);
messageAsset.MessageReference.EntityKey = new EntityKey("MyEntities.MessageSet", "Id", messageId);
context.AddToMessageAssetSet(messageAsset);
context.SaveChanges();
Но я получил следующее исключение:
Оператор INSERT конфликтовал с ограничением FOREIGN KEY "FK_BC_Message_Assets_BC_Assets". Конфликт произошел в базе данных «Тест», таблице «dbo.BC_Assets», столбце «Id».
Заявление было прекращено.
Когда я смотрю на запрос, я замечаю, что значение параметра AssetId равно "0", несмотря на то, что я предоставил "1" для EntityKey. Вот сгенерированный запрос:
exec sp_executesql N'insert dbo.[BC_Message_Assets]([MessageId], [AssetId], [CompletionTime], [StatusId]) values (@0, @1, null, @2) ',N'@0 int,@1 int,@2 int',@0=47,@1=0,@2=1
Я не могу объяснить, что происходит. Я жестко закодировал «1» в EntityKey и получил «0» в запросе?