我需要一些建议。我是.NET MVC的新手,我想知道,我应该在哪里存储linq查询?在下面的例子中,我把它们放在我的控制器中就像这样
public ActionResult Index()
{
var vehicles = from v in db.Vehicles
from m in db.Makes
from mods in db.Models
where v.Model.ModelID == mods.ModelID
where mods.Make.MakeID == m.MakeID
select v;
return View(vehicles.ToList());
}
我是否以正确的方式考虑这一点,因为查询可能会变得更加复杂?
答案 0 :(得分:2)
在您的情况下我要做的是使用Repository模式,这样可以避免LINQ在控制器中的依赖性。我在下面给你一个大纲。
定义存储库接口:
public interface IRepository
{
public IEnumerable<Vehicle> FetchAllVehicles();
}
然后创建此存储库的实现,使用LINQ来完成获取Veihcles的实际工作:
public class Repository : IRepository
{
public IEnumerable<Vehicle> FetchAllVehicles()
{
var vehicles = from v in db.Vehicles
from m in db.Makes
from mods in db.Models
where v.Model.ModelID == mods.ModelID
where mods.Make.MakeID == m.MakeID
select v;
return vehicles.ToList();
}
}
然后使用控制器中的存储库:
private IRepository _repo = new Repository();
public ActionResult Index()
{
return View(_repo.FetchAllVehicles());
}