我有用於跟蹤工作組的ASP.NET核心應用程序。 WorkCrewMembers
是包含船員的班級。它有一個鍵爲WorkCrew
的班級,其中有一個TimeSpan?
字段的某個笨拙列表,指定該班組在何時開始工作在一週的特定幾天:SunStart, MonStart, TueStart, WedStart, ThuStart, FriStart, SatStart
。這些類是從舊數據庫生成的。我有以下的代碼是在ASP.NET核心愉快工作1.0.1升級到.NET Core 1.1後,LINQ語句崩潰了預覽版1
public class Program
{
public static void Main(string[] args)
{
using (DBContext context = new DBContext()) {
var lstWorkCrew = (from m in context.WorkCrewMembers
where m.WorkCrew.TodayStartTime() != null
select m.WorkCrewId).ToList();
Console.WriteLine($"Today {lstWorkCrew.Count} work crews");
}
}
}
public partial class WorkCrew {
public TimeSpan? TodayStartTime() {
TimeSpan?[] starts = {
SunStart, MonStart, TueStart, WedStart, ThuStart, FriStart, SatStart
};
int dayOfWeek = (int)DateTime.Now.DayOfWeek;
return starts[dayOfWeek];
}
}
然而,當我升級包1.1,我與m.WorkCrew.TodayStartTime()
湊了線以下錯誤:
未處理的異常信息:System.ArgumentException:方法System.Nullable`1 [System.TimeSpan] TodayStartTime()'宣佈類型 'WorkCrew' 不能與類型 'System.Int32'
有趣的實例調用如果我這樣做from w in context.WorkCrew where w.TodayStartTime() != null select w
它工作正常。
這是1.1中的突破性變化嗎?或者這是應該提前引發異常,因爲我的代碼不合法?或者只是微軟將修復的錯誤?
唉!得到完全相同的錯誤:(似乎由於某種原因'm.WorkCrew'現在是空的!如果我第一次得到'var wcm = context.WorkCrewMembers.ToList()',然後有'wcm.Where(m => m.WorkCrew?.TodayStartTime())' - 我沒有得到異常,但是我得到0行,就好像* all *'m.WorkCrew'爲null – Felix
對不起,這看起來像是一個錯誤,我可以看看這個簡單的代碼片段是如何產生這種類型的錯誤的,在這裏我們不應該編譯以防萬一有什麼錯誤,我想你不會在你的類的某個地方進行一些隱藏的反射調用, –
謝謝。沒有 - 在這裏沒有隱藏的魔法:) – Felix