假设以下是我们的业务层代码:
以下是我们在ASP.NET MVC项目中的控制器代码:
现在,我的问题是:
在调用每个业务层方法时,我们是否有一个新的连接到数据库? 编辑: 以下代码是否适合确保在
public class DatabaseInteract
{
//`NewsEntities` is our ObjectContext
public List<News> GetAllNews()
{
return new NewsEntities().News.OrderByDescending(q => q.RegidtrationDate).ToList();
}
public News GetNewsById(int newsId)
{
return new NewsEntities().News.FirstOrDefault(q => q.Id== newsId);
}
public bool IsNewsExist(int newsId)
{
var news = new NewsEntities().News.FirstOrDefault(q => q.Id== newsId);
return news != null;
}
}
以下是我们在ASP.NET MVC项目中的控制器代码:
public ActionResult Index(int? id)
{
DatabaseInteract databaseInteract = new DatabaseInteract();
ViewBag.AllNews = databaseInteract.GetAllNews(id.Value);
ViewBag.News = databaseInteract.GetNewsById(id.Value);
ViewBag.IsExist = databaseInteract.IsNewsExist(id.Value);
return View(model);
}
现在,我的问题是:
在调用每个业务层方法时,我们是否有一个新的连接到数据库? 编辑: 以下代码是否适合确保在
DatabaseInteract
类的每个实例中只有一个连接到数据库:public class DatabaseInteract
{
readonly NewsEntities _entities = new NewsEntities();
//`NewsEntities` is our ObjectContext
public List<News> GetAllNews()
{
return _entities.News.OrderByDescending(q => q.RegidtrationDate).ToList();
}
public News GetNewsById(int newsId)
{
return _entities.News.FirstOrDefault(q => q.Id== newsId);
}
public bool IsNewsExist(int newsId)
{
var news = _entities.News.FirstOrDefault(q => q.Id== newsId);
return news != null;
}
}
.FirstOrDefault()
并检查是否为空外,还可以使用.Any()
。 - Hans Kesting