尽管这里有很多帖子,但这个让我感到难过。
该场景是一个基本的MVC(2)Web应用程序,具有简单的CRUD操作。每当提交编辑表单并调用UpdateModel()时,都会抛出异常:
用户代码未处理System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException
这是针对DropDownList值发生的,DropDownList值是实体表上的外键。但是,表单上还有另一个DropDownList列表,表示另一个外键,它不会抛出错误(不出所料)。在“编辑操作”中手动更改属性值:
Recipe recipe = repository.GetRecipe(int.Parse(formValues["recipeid"]));
recipe.CategoryId = Convert.ToInt32(formValues["CategoryId"].ToString());
recipe.Page = int.Parse(formValues["Page"].ToString());
recipe.PublicationId=Convert.ToInt32(formValues["PublicationId"].ToString());
允许更新CategoryId和Page属性,然后在PublicationId上抛出错误。在db和dbml中检查所有引用完整性。
任何关于此的灯光都会受到欢迎。
答案 0 :(得分:2)
此错误与模型绑定无关。相反,它与LINQ to SQL严格相关。您可以找到导致其in this post的原因的合理解释。
答案 1 :(得分:0)
使用以下
更改您的代码而不是
recipe.CategoryId = Convert.ToInt32(formValues["CategoryId"].ToString());
写这个
recipe.Category = db.GetCatById(formValues["CategoryID"]);