我有用于跟踪工作组的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