当添加或更新一行时,EF(v5.0)不会将值指定给可为null的int(int?)字段。实体框架不分配int?字段
这里是我的代码一个简化版本:
public class MyTable
{
public int Id { get; set; }
public Nullable<int> MyInt { get; set; }
}
void UpdateRow(MyTable currentRow)
{
MyTable rowToUpdate = transaction.entity.Find(currentRow.Id);
rowToUpdate.MyInt = currentRow.MyInt;
transaction.Context.SaveChanges();
}
的SaveChanges工作得很好(返回1,也不例外),但不更新敏。我已经确认这两个MyTable对象都包含所需的值。
这发生在添加和更新。请注意,我有可以添加/更新的其他类型的可空字段(例如DateTime?)。
你的假设EF不会更新int?的错误。只要尝试用正常的int替换MyInt属性,我敢打赌那也不会被更新。看起来你已经对交易对象做了一些漂亮的事情。问题的根源可能在于那个阶级。 – Dabblernl
我有可能将手指指向错误的罪魁祸首(EF)。大多数底层代码(例如事务对象)都是从模板生成的,因此一种可空字段的代码与其他任何类型的代码大致相同。请回想一下,我对其他类型的可空字段(例如DateTime)没有问题。我将查看生成的代码(不是我的)。 我指向EF的原因是我读了一篇关于这个确切问题的晦涩的帖子,有人说它会在下一个版本中修复。但是,我无法确认问题或解决方法。 – DaveK