【发布时间】:2016-03-15 04:02:38
【问题描述】:
我在我的 ASP.NET MVC6 EF7 Web 应用程序上从控制器运行查询时遇到了一些问题...
Model 和 DbContext 在这个之前的问题中:EF7 Incorrect configuration of the DBContext?
当我尝试运行以下包含几个联接的 Linq 查询并尝试从数据库中获取特定日期的一些条目时,就会出现问题...
public IActionResult GetEntries(int year, int month, int day)
{
//_context.Database.SetCommandTimeout(180);
string dateTest = new DateTime(year, month, day).ToString("yyyy-MM-dd");
var results = (from c in _context.Comments
join r in _context.Reviews on c.ReviewId equals r.ReviewId
join f in _context.Films on c.ReviewId equals f.ReviewId
where c.Author.Equals("AuthorTest")
&& (c.Created.CompareTo(new DateTime(year, month, day, 0, 0, 0)) >= 0) && (c.Created.CompareTo(new DateTime(year, month, day, 23, 59, 59)) < 0)
&& !r.Status.Contains("Enabled")
select new
{
ReviewId = c.ReviewId,
ReviewStatus = r.Status,
Author = c.Author
});
var results2 = results.ToList();
return View(results2);
}
我得到的例外是......
“System.Data.SqlClient.SqlException”类型的异常发生在 EntityFramework.Core.dll 但未在用户代码中处理
附加信息:超时已过期。超时时间已过 在操作完成之前或服务器没有响应。
有趣的是....
&& (c.Created.CompareTo(new DateTime(year, month, day, 0, 0, 0)) >= 0) && (c.Created.CompareTo(new DateTime(year, month, day, 23, 59, 59)) < 0)
所以...超时异常对我来说没有太大意义,因为一旦我删除 AND 条件,它就会返回数千个条目。
此外,如果我在 ASP.NET MVC5 EF6 上插入相同的查询,则查询就像 AND 条件的魅力...
我在这里错过了什么?
最后,我尝试的另一件事是创建一个没有连接和日期条件的单个 Linq 查询,它也可以完美地工作......
public IActionResult GetEntries(int year, int month, int day)
{
//_context.Database.SetCommandTimeout(180);
string dateTest = new DateTime(year, month, day).ToString("yyyy-MM-dd");
var results = (from c in _context.Comments
where c.Author.Equals("AuthorTest")
&& (c.Created.CompareTo(new DateTime(year, month, day, 0, 0, 0)) >= 0) && (c.Created.CompareTo(new DateTime(year, month, day, 23, 59, 59)) < 0)
select new
{
ReviewId = c.ReviewId,
Author = c.Author
});
var results2 = results.ToList();
return View(results2);
}
任何指针?
谢谢!
【问题讨论】:
标签: asp.net entity-framework linq asp.net-core-mvc entity-framework-core