升级到点网核心SQL问题

时间:2018-07-10 19:11:41

标签: sql entity-framework .net-core upgrade

因此,我正在尝试更新我的数据项目以使用点网核心。我正在慢慢解决所有错误。我在这方面遇到了麻烦。我需要创建一个返回列表的SqlQuery,但据我所知,点网核心尚不支持该列表。

这是代码

List<DateTime> result = this.Database.SqlQuery<DateTime>(@"SELECT c.DateId FROM Schedule.Calendar c
WHERE c.DateId > @startDate AND c.DateId < @endDate AND c.IsWorkDay = 0",
     new SqlParameter("@startDate", startDate), new SqlParameter("@endDate", endDate)).ToList();

我还有更多类似的内容,但我也无法弄清楚。我在SqlQuery上遇到错误

它说DatabaseFacade不包含SqlQuery的定义。我将如何更新此代码?

2 个答案:

答案 0 :(得分:0)

我了解您正在尝试使用Raw SQL,但我更喜欢使用Linq来实现这种情况:

List<DateTime> GetDateTimeResult(DateTime startDate, DateTime endDate, int isWorkDay)
{
   using (var db = new YourScheduleDatabaseContext())
   {
     List<DateTime> result = db.Calendar
                               .Where(c => c.DateId > startDate)
                               .Where(c => c.DateId < endDate)
                               .Where(c => c.IsWorkDay.Equals(isWorkDay))
                               .Select(c => new DateTime(c.DateId)).ToList();
     return result;
   }
 }

我可能会误解了您的上下文名称和表名称,但希望您有主意并乐于提供进一步的帮助。

答案 1 :(得分:0)

我最终使用了以下代码:

List<MyDateTime> result = this.Set<MyDateTime>().FromSql(@"SELECT Schedule.Workday(@startDate, @days)",
                new SqlParameter("@startDate", startDate), new SqlParameter("@days", days)).ToList();

            List<DateTime> finalResult = new List<DateTime>();

            foreach(MyDateTime myDate in result)
            {
                finalResult.Add(myDate.DateTime);
            }

这样,我不必具有使用或特定的上下文。我刚刚创建了具有DateTime属性的类,用作MyDateTime。