ASP.NET MVC – 在何处放置数据库查询
|
我正在尝试学习ASP.NET MVC 4,我很困惑我应该把数据库查询放在哪里.我有 PHP的背景,特别是CodeIgniter,我习惯于将所有数据库查询放入模型中.我有这个问题: db.Orders.Where(order => order.columnName == columnName).SingleOrDefault(); 基于这个ASP.NET tutorial,我应该把它放在控制器中.但是,我发现这个StackOverflow question,它说我应该把它放在模型中(类似于我以前用PHP做的).对同一问题的另一个答案提到了创建包含所有查询的存储库模式/类. 所以我的问题是,在代码维护(可读性,更改效果等)方面,以下选项的优缺点是什么? >控制器中的查询 解决方法使用存储库模式处理此问题的简单方法.这不是最好的方法.但是会告诉您如何使用存储库模式处理这个问题.创建一个存储库来执行所有数据库事务 public interface IRepository
{
Order GetOrder(int orderId);
}
public class Repository : IRepository
{
YourDBContext db;
public Repository()
{
db = new YourDBContext ();
}
public User GetOrder(int orderId)
{
return db.Orders.FirstOrDefault(s=>s.OrderID==orderId);
}
}
您可以在同一个项目中创建它(在“数据访问逻辑”下)或为此创建一个单独的类库(并将其引用到您使用它的任何地方). 现在在您的控制器中,在导入必要的命名空间后,只需创建存储库的对象并调用您感兴趣的方法即可 public OrderController :Controller
{
protected IRepository repo;
public OrderController()
{
repo=new Repository();
}
public OrderController(IRepository repositary)
{
// This constructor is for your Unit test project,// you can pass a mock repository here
// Read dependency injection
repo=repository;
}
public ActionResult details(int id)
{
var order=repo.GetOrder(id);
if(order!=null)
{
return View(order);
}
}
}
如果认为您的视图需要它,您可以考虑使用视图模型.在这种情况下,您需要从域对象中读取属性值,并将其设置为视图模型的实例并将其返回到视图. 随着代码/功能的增长,您可以将代码移动到不同的类/层/项目. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ASP.NET MVC是一个大的企业项目的不好的选择吗?
- VS 2013 RC中缺少ASP.NET Web窗体脚手架功能
- 在Azure中设置ASP.NET 5 Web应用程序的SQL连接字符串
- asp.net-mvc – ASP.NET MVC的初学者在线资源是什么?
- asp.net-mvc – 如何处理MVC5中的配置和代码中的404错误?
- asp.net-mvc – 获取错误“视图at’/ Views / Page / home.
- 如何从ASP.NET中的Web请求返回pdf?
- asp.net-mvc – 如何在MVC 5中使用用户身份中的角色
- asp.net mvc c#获取页面的url来自
- asp.net-mvc – IIS 7上的ASP.net MVC返回空白页面
- asp.net-mvc – ASP.NET MVC JavaScript路由
- asp.net-mvc – 在运行时ASP.NET捆绑和缩小有什么
- ASP.NET MVC 3数据注释:动态添加验证
- asp.net – 我的HTML5的doctype是否必须在第一行
- 在ASP.net“正确”中实现OpenID – 会员或验证提
- asp.net-mvc – 链接到iPad上的Google Document
- asp.net-mvc – 哪个更正确:使用UpdateModel()或
- ASP MVC C#:是否可以将动态值传递给属性?
- asp.net-mvc-4 – MVC 4 Razor如果拆分div标签
- ASP.net Web窗体,在编译时获取aspx /视图错误?
