对可空布尔属性的更改不会保存回EF4中的数据库,但其他可为空的字段在更新时不会有任何问题。例如,如果我执行类似下面的简单查询:更新实体框架中的可空布尔字段
EmployeeSurvey employeeSurvey = context.EmployeeSurveys.SingleOrDefault(s => s.EmployeeSurveyID == 60);
employeeSurvey.EmployeeSmokes = true;
employeeSurvey.OtherComments = "Test comment";
context.SaveChanges();
更改已成功储存到数据库的OtherComments但是EmployeeSmokes性质的变化都没有。 EmployeeSmokes属性是一个布尔值?和其他可空布尔字段有相同的问题。
此外,只有在更改/更新现有的EmployeeSurvery记录时才会出现问题 - 创建/插入新的EmployeeSurveys时,包括EmployeeSmokes在内的所有属性均成功保存。
我也尝试使用ApplyCurrentValues方法根据this thread,但不幸的是它没有帮助。
任何想法为什么会发生这种情况?
您的代码是正确的。问题在别处(不在你的问题中)。这对我有用。您需要更多地进行调试。尝试SQL跟踪。 – 2010-09-01 12:43:14
我遇到了像你一样的问题,但它是可空的整数。从我设法测试的时候,当你在数据库中添加实体并且该字段被设置为** null **时,在那之后你将不能使用EF来更新它...所以我想这是某种错误。我会继续搜索,如果我找到答案,我会发布一个答案。 – 2011-07-04 07:43:22