我正在尝试更新新闻帖子。该帖子有一个名为Created的日期字段,该字段在最初创建记录时填充。我在更新时不会包含此内容,因此在使用以下方法时,这将为null并引发错误。
我正在使用MVC 5和Entity Framework 6
[XDebug]
;zend_extension=opcache.so
zend_extension = /Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so
xdebug.remote_enable=1
xdebug.remote_handler = "dbgp"
xdebug.remote_host = "localhost"
xdebug.remote_mode = "req"
xdebug.remote_port = 9001
xdebug.idekey = "PHPSTORM"
这种方法确实有效,但看起来有点笨拙。
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit([Bind(Include = "Id,Title,Summary,Content")] Post post) {
if (ModelState.IsValid) {
db.Entry(post).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(post);
}
这样做的最佳做法是什么?
谢谢!
答案 0 :(得分:6)
EF还有一个简单的内置" AutoMapper"这与标量值一起使用。
public class PostViewModel()
{
public string Id {get;set;}
public string Title {get;set;}
public string Summary {get;set;}
public string Content {get;set;}
}
public ActionResult Edit(PostViewModel viewModel)
{
if (ModelState.IsValid) {
var newsPost = db.Posts.Find(post.Id);
...
db.Entry(newsPost).CurrentValues.SetValues(viewModel);
...
}
}