0
我有以下實體對象(數據庫版本上右):DbUpdateException被拋出了未知的原因
Invoker
(N) Commands
Command
(1) Event EventId(FKEY)
(N) Effects
(N) Conditions
--Other members
Effect
(1) EffectType EffectTypeId(FKEY)
(N) Properties CommandId(FKEY)
(N) Conditions
--Other members
CommandConditions: ConditionId(PKEY, FKEY), CommandId(FKEY)
EffectConditions: ConditionId(PKEY, FKEY), EffectId(FKEY)
Condition
(1) ConditionType
(N) Properties
EffectProperties: PropertyId(PKEY, FKEY), EffectId(FKEY)
ConditionProperties: PropertyId(PKEY, FKEY), ConditionId(FKEY)
Property
Name
Value
當我想更新現有調用實體,我不喜歡這樣寫道:
public void UpdateInvoker(Invoker existingInvoker, InvokerViewModel contract, MyEntities context)
{
//typeof(Invoker.Command = CommandViewModel
existingInvoker.Commands = contract.Commands.Select(c => c.ToDataCommand(context));
}
public Command ToDataCommand(MyEntities context)
{
var command = context.Commands.Create();
command.CommandEvent = context.Events.First(e => e.EventName == Event.Name);
command.CommandConditions = Conditions.Select(c => c.ToDataCondition(context)).ToList();
command.CommandEffects = Effects.Select(e => e.ToDataEffect(context)).ToList();
context.Commands.Add(command);
return command;
}
用於生成命令的相同設置也用於生成效果,條件和屬性實體。當我犯這個交易,我收到一個有點無助DbUpdateException:
型「System.Data.Entity.Infrastructure.DbUpdateException」的第一次機會異常出現在EntityFramework.dll
其他信息:衝突的改變檢測。嘗試插入具有相同密鑰的多個實體時可能會發生這種情況。
但是,這個設置如何創建具有匹配鍵的實體?當實體在同一列上有PKEY和FKEY時,實體框架是否工作不正常?