因此,我正在尝试更新我的数据项目以使用点网核心。我正在慢慢解决所有错误。我在这方面遇到了麻烦。我需要创建一个返回列表的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的定义。我将如何更新此代码?
答案 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。