我遇到了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語句衝突與外鍵約束「FK_BC_Message_Assets_BC_Assets」。衝突發生在數據庫「Test」,表「dbo.BC_Assets」,列'Id'中。 該聲明已被終止。
當我查看查詢時,我注意到AssetId的參數值是「0」,儘管我向EntityKey提供了「1」。以下是生成的查詢:
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
我無法解釋發生了什麼。我在EntityKey中硬編碼「1」,並在查詢中收到「0」?