【发布时间】:2010-02-03 11:30:22
【问题描述】:
尽管这里有很多帖子,但这个让我很难过。
该场景是一个带有简单 CRUD 操作的基本 MVC(2) Web 应用程序。每当提交编辑表单并调用 UpdateModel() 时,都会引发异常:
System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException 未被用户代码处理
这发生在作为实体表上的外键的 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 中检查所有引用完整性。
欢迎对此提出任何启示。
【问题讨论】:
-
我愿意。这只是一些进入错误的调试代码;)