当我添加或更新行时,EF(v5.0)不会为可以为空的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,没有异常),但MyInt没有更新。我已确认两个MyTable对象都包含所需的值。
添加和更新都会发生这种情况。请注意,我有其他类型的可空字段(例如DateTime?),可以添加/更新。
答案 0 :(得分:0)
这是我在我的数据库中更新entites的解决方案:
var person = unitOfWork.PersonRepository.GetByID(1);
person.FirstName = "NewName";
unitOfWork.PersonRepository.Update(person);
unitOfWork.Save();
public virtual void Update(TEntity entityToUpdate)
{
DBSet.Attach(entityToUpdate);
Context.Entry(entityToUpdate).State = EntityState.Modified;
}
Save()只调用SaveChanges()。
您需要在您的代码中附加您的实体,您只需编辑本地变量!
希望这有帮助!