3
我需要爲SQL Server使用實體框架(代碼優先方法)爲ASP.NET Web應用程序生成一些星期摘要。實體框架和按星期分組的星期開始日集
更多的應用程序正在客戶端運行,服務器僅通過OData(Breeze.js)提供對實體的訪問。不幸的是微風不支持聚合函數,所以我要實現一些控制器操作的服務器端,對於一些更復雜的查詢需要,比如這一個:
var query = from r in db.Context.Records
where r.MeasurementId == measurementId
group r by SqlFunctions.DatePart("WK", r.Time) into g
select new
{
Time = g.Min(r => r.Time),
MinImport = g.Min(r => r.Import),
...
};
我使用LINQ,而不是背景SqlQuery<T>
,因爲它返回IQueryable
而不是IEnumerable
。
問題出在日期。記錄按星期分組,但星期以默認星期日開始,但我需要從星期一開始。這可以通過運行在非常簡單的SQL中修復:
SET DATEFIRST 1;
但是我在實體框架中找不到任何解決方案。是否可以在初始化DbContext
之後或之中運行某個查詢以設置DATEFIRST
?
這應當引起週日落入前一週,使得週一的一週新的開始。在一年的第一週內可能會出現奇怪的情況,所以請確保在這種情況下代碼仍然有效。 –