存储区更新、插入或删除语句影响到了意外的行数(0)。实体在加载后可能被修改或删除。刷新 ObjectStateManager 项。
2014-04-24 19:37
561 查看
在用asp.net MVC3 的MusicStore时候 Edit某个数据项时提示下面的错误:
存储区更新、插入或删除语句影响到了意外的行数(0)。实体在加载后可能被修改或删除。刷新 ObjectStateManager 项。
这个问题的源头是
1,[Bind(Exclude = "AlbumId")]
public class Album
[Bind(Exclude = "AlbumId")]表明bind的时候不会取AlbumId,不管你form里面是否有它。
2,
[ScaffoldColumn(false)]
public int AlbumId { get; set; }
导致生成的页面form里面没有包含AlbumId。
解决办法大概有2个:
第一步自然是给form加上AlbumId。
有两个方法:
1,
[HiddenInput()]
public int AlbumId { get; set; }
2,
加
第二步得到AlbumId,有两个方法:
1,去掉[Bind(Exclude = "AlbumId")]
2,edit方法如下:
[HttpPost]
public ActionResult Edit(int albumId, FormCollection formData)
{
var album = db.Albums.Find(albumId);
if (ModelState.IsValid)
{
object id=formData["AlbumId"];
UpdateModel<Album>(album, formData);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.GenreId = new SelectList(db.Genres, "GenreId", "Name", album.GenreId);
ViewBag.ArtistId = new SelectList(db.Artists, "ArtistId", "Name", album.ArtistId);
return View(album);
}
为什么需要设置[Bind(Exclude = "AlbumId")]呢,出于安全考虑。
存储区更新、插入或删除语句影响到了意外的行数(0)。实体在加载后可能被修改或删除。刷新 ObjectStateManager 项。
这个问题的源头是
1,[Bind(Exclude = "AlbumId")]
public class Album
[Bind(Exclude = "AlbumId")]表明bind的时候不会取AlbumId,不管你form里面是否有它。
2,
[ScaffoldColumn(false)]
public int AlbumId { get; set; }
导致生成的页面form里面没有包含AlbumId。
解决办法大概有2个:
第一步自然是给form加上AlbumId。
有两个方法:
1,
[HiddenInput()]
public int AlbumId { get; set; }
2,
加
@Html.HiddenFor(model => model.AlbumId)
第二步得到AlbumId,有两个方法:
1,去掉[Bind(Exclude = "AlbumId")]
2,edit方法如下:
[HttpPost]
public ActionResult Edit(int albumId, FormCollection formData)
{
var album = db.Albums.Find(albumId);
if (ModelState.IsValid)
{
object id=formData["AlbumId"];
UpdateModel<Album>(album, formData);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.GenreId = new SelectList(db.Genres, "GenreId", "Name", album.GenreId);
ViewBag.ArtistId = new SelectList(db.Artists, "ArtistId", "Name", album.ArtistId);
return View(album);
}
为什么需要设置[Bind(Exclude = "AlbumId")]呢,出于安全考虑。
相关文章推荐
- Mysql EF 触发器生成主键id 存储区更新、插入或删除语句影响到了意外的行数(0)。实体在加载后可能被修改或删除。刷新 ObjectStateManager 项 ;System.Data.Entity.Infrastructure.DbUpdateConcurrencyException
- 存储区更新、插入或删除语句影响到了意外的行数(0)。实体在加载后可能被修改或删除。刷新 ObjectS
- 存储区更新、插入或删除语句影响到了意外的行数(0)。实体在加载后可能被修改或删除。刷新 ObjectS
- 存储区更新、插入或删除语句影响到了意外的行数(0)。实体在加载后可能被修改或删除。
- [Asp.net mvc]实体更新异常:存储区更新、插入或删除语句影响到了意外的行数(0)。实体在加载后可能被修改或删除。
- 对于分页视图里面修改数据,在DAL层提示存储区更新、插入和删除语句影响到了意外的行数(0)的原因
- 存储区更新、插入或删除语句影响到了意外的行数
- 存储区更新、插入或删除语句影响到了意外的行数({0})。
- SQL语句,数据更新,数据插入删除修改和对视图的更新操作
- mysql更新语句获取受影响行数和插入记录id
- mysql使用ROW_COUNT()返回插入、更新、删除操作影响行数
- mysql使用ROW_COUNT()返回插入、更新、删除操作影响行数
- mysql更新语句获取受影响行数和插入记录id
- 动态给表添加删除字段并同时修改它的插入更新存储过程
- 利用二叉查找树处理数据-加载、存储、插入、删除、修改、输出
- (Insert)插入语句,(Update)修改语句,(delete)删除语句
- Chapter 3. SQL Server数据库、表的基本操作(insert插入、update更新、delete、truncate删除语句)
- 【个人学习笔记10之--数据修改之插入数据,更新数据,删除数据.】
- Oracle一次执行(插入、更新、删除)多条语句的办法
- 数据库修改之更新员工表,根据ID删除Mapping表数据,再插入数据