aps.net mvc 用linq来add formcollecttion 返回的model注意事项

来源:互联网 发布:mysql修改字段唯一性 编辑:程序博客网 时间:2024/06/03 19:14

如果return view(newModel)中的newModel有外键,并return前给newModel的外键赋值-称之为modelF,则这个外键值对象modelF相当于一个从数据库拿出来的对象,它保存在内存中了,当页面post并submitChange时,这个外键modelF就会保存修改到数据库,由于return 前的newModel是modelF的外键,这就导致了return 前的newModel也自动地add到了数据,加上post回来的model也add到数据库,由于add时有submitchange,就相当于add了post回来的model,再modelF的修改submitchange到数据库,但modelF带有return 前的newModel,所以出来save(model)时有两条数添加到model对象所对应的数据库表;

解决方法是在return 前不要给newModel的外键赋值,让它为null,如果要用到它的外键值,可以把newModel和外键modelF定义为另一个类viewmodel的属性,再return 这个viewmodel,或用viewData来保存这个外键modelF到页面里到转换并调用。

原创粉丝点击