我的实体框架和外键有问题。
我有一个表“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”冲突。冲突发生在数据库“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”?