实体框架不分配int?领域

时间:2014-07-23 20:06:07

标签: entity-framework nullable

当我添加或更新行时,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?),可以添加/更新。

1 个答案:

答案 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()。

您需要在您的代码中附加您的实体,您只需编辑本地变量!

希望这有帮助!