我有一组具有多对多关系的表(ConditionTemplate 和 KeyWord)。在代码中,我试图将关键字添加到特定的 ConditionTemplate 记录。不幸的是,当我认为我正在向特定条件添加关键字时,我收到一个错误,就好像它正在添加一个新关键字而不与条件相关联。
我的模型的图像:
我的代码:
全局变量创建:
EnterpriseEntities EE;
ConditionTemplate myConditionTemplate;
加载全局变量:
EE = new EnterpriseEntities();
EE.Database.Connection.ConnectionString = Myapp.EnterpriseEntityConnectionString;
myConditionTemplate = EE.ConditionTemplates.Where(c => c.TemplateCode == "17D").FirstOrDefault();
上面的代码加载了一个带有许多关键字的条件。
可用关键字位于列表框中,用户按下按钮选择关键字以移至条件。这是处理它的代码。
foreach (KeyWord SelectedKeyWord in ListBoxAvailableKeyWords.SelectedItems)
{
KeyWord NewKeyWord = new KeyWord
{
KeyWordID = SelectedKeyWord.KeyWordID,
ID = SelectedKeyWord.ID,
Word = SelectedKeyWord.Word
};
myConditionTemplate.KeyWords.Add(NewKeyWord);
}
然后用户按下一个按钮来保存更改,我打电话
EE.SaveChanges
然后我得到这个错误:
System.Data.UpdateException:更新条目时出错。有关详细信息,请参阅内部异常。---> System.Data.SqlClient.SqlException:违反唯一键约束“IX_KeyWord”。无法在对象“dbo.KeyWord”中插入重复键。重复键值为 (ADJUDICATION)。该语句已终止。
如果我在创建关键字对象时删除设置 word 属性 (Word = SelectedKeyWord.Word ) 的代码,则会收到此错误。
System.Data.Entity.Validation.DbEntityValidationException:一个或多个实体的验证失败。有关更多详细信息,请参阅“EntityValidationErrors”属性。
这告诉我单词字段是必需的。