modelstate – asp.net mvc没有实体框架
我正在学习asp.net mvc,并通过一个伟大的教程来展示它.本教程还使用了实体框架.
我们有自己的数据访问类,我必须使用. [HttpPost] public ActionResult Edit(Movie movie) { if (ModelState.IsValid) { db.Entry(movie).State = EntityState.Modified; db.SaveChanges(); return RedirectToAction("Index"); } return View(movie); } 如果我不使用实体框架,它会是什么样子?我仍然需要使用ModelState.IsValid并保存状态,就像完成一样 db.Entry(movie).State = EntityState.Modified; 请指教.使用asp.net mvc而不使用Entity框架的一个清晰的例子将是巨大的. 我需要知道的是,国家在这里扮演什么角色,以及是否强制使用,还是只是实体框架运作的一部分. 我会重写: [HttpPost] public ActionResult Edit(Movie movie) { myDBObject.SaveChanges(); return RedirectToAction("Index"); } 其中myDBObject是我的自定义数据库访问对象. 解决方法
您在那里看到控制器直接使用一些数据访问框架(如实体框架)的示例是不好的例子.整个互联网被这样的东西污染了.我几乎看不到眼睛受伤了.我认为那些不好的做法.数据访问应在存储库中分离和抽象.所以例如:
public interface IMoviesRepository { Movie Get(int id); void Save(Movie movie); } 那么您可以使用纯ADO.NET,EF,NHibernate,远程Web服务调用,某些自定义ORM或真正的任何方式来实现此接口: public class MyCustomFrameworkMoviesRepository: IMoviesRepository { ... } 并且控制器将把这个存储库接口作为构造函数参数: public class MoviesController: Controller { private readonly IMoviesRepository _repository; public MoviesController(IMoviesRepository repository) { _repository = repository; } public ActionResult Index(int id) { var movie = _repository.Get(id); return View(movie); } [HttpPost] public ActionResult Index(Movie movie) { if (!ModelState.IsValid) { return View(movie); } _repository.Save(movie); return RedirectToAction("Success"); } } 最后一部分是配置依赖注入框架,将存储库的正确实现传递到控制器中.现在,您可以看到数据获取的方式与控制器逻辑完全解耦.这是应该的方式.始终尽量避免应用程序不同层之间的强耦合. 并回答您关于国家财产的问题:这是EF完全具体的内容,在控制器中看到像这样的事情真是可惜. 为了进一步提高这一点,您将引入视图模型.视图模型是专门设计用于满足给定视图要求的类.所以例如Movie是域模型.域模型不应该直接传递给视图.控制器操作不应该将域模型作为动作参数.您应该定义仅包含给定视图所需的视图模型,然后执行视图模型和域模型之间的映射.框架如AutoMapper使这非常简单. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 如何在回发后阻止关闭模态弹出窗口(ModalPopupE
- asp.net-core – Stream的意外结束,内容可能已被另一个组件
- asp.net – 扩展方法和Razor页面
- 如何在ASP.NET自定义控件中持久保存List属性?
- asp.net-web-api – JwtSecurityTokenHandler 4.0.0重大改变
- asp.net – 诸如Eval(),XPath()和Bind()的数据绑定方法只能
- .net – 简单注入器“由于在MVC验证期间已经处理了DbContex
- asp.net-mvc-3 – 可以在ASP.NET MVC 3上安装ASP.NET MVC 4
- 如何使用asp.net获取html select的所选值
- asp.net – 页面上有多个RequiredFieldValidators,但它们需
- asp.net-mvc – ASP.NET MVC如何使用ASP.NET成员
- .net-4.0 – ASP.Net使用错误的web.config进行虚
- asp.net – 地理位置网络服务建议
- 如何在ASP.NET应用程序中有效地缩放和裁剪图像?
- ASP.NET MVC4安全性,身份验证和授权
- asp.net-mvc – 在帖子上生成涂鸦报告
- asp.net-mvc – ASP MVC中的“@”是什么意思/做什
- .net – 设置可用于AppFabric缓存的内存量
- asp.net-mvc – ASP.NET MVC – 当参数为null时绑
- asp.net-mvc – 如何在单击Html.ActionLink时加载