【发布时间】:2016-11-08 09:07:34
【问题描述】:
我有跟踪工作人员的 ASP.NET Core 应用程序。 WorkCrewMembers 是包含机组成员的类。它有一个WorkCrew 类的键,其中有一个有点笨拙的TimeSpan? 字段列表,指定该工作人员何时开始在一周中的特定日期工作:SunStart, MonStart, TueStart, WedStart, ThuStart, FriStart, SatStart。这些类是从遗留数据库生成的。我有以下代码在 ASP.NET Core 1.0.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:在“WorkCrew”类型上声明的方法“System.Nullable`1[System.TimeSpan] TodayStartTime()”不能用“System.Int32”类型的实例调用
有趣的是,如果我这样做 from w in context.WorkCrew where w.TodayStartTime() != null select w 它工作正常。
这是 1.1 中的重大变化吗?还是因为我的代码不合法而应该更早抛出异常?或者只是微软将修复的错误?
【问题讨论】:
标签: c# linq asp.net-core