EntityFramework db.SaveChanges()仅在Bool为True时有效

时间:2014-12-02 19:04:21

标签: c# entity-framework-5 unit-of-work

EntityFramework发生了奇怪的事情。当我调试db.SaveChanges时,我可以看到正确的数据即将被发送到数据库。当CurrentFirstName字段(bool)设置为true时,保存正确执行,数据最终在数据库中。当CurrentFirstName设置为false时,没有任何反应,也没有数据到达数据库。

正确映射实体和存储过程。该实体具有唯一的主键。

对于插入存储过程,是否有可能以某种方式将“false”正确转换为“0”?任何建议表示赞赏。谢谢。

    public int PK_FirstNameID { get; set; }
    public string FirstName { get; set; }
    public bool CurrentFirstName { get; set; }
    public int fk_DemographicsID { get; set; }

[HttpPost]
public PartialViewResult SaveFirstName(DemographicsViewModel model)
{
    if (ModelState.IsValid)
    {
        try
        {
            int fkid = model.fk_DemographicsID;
            int pkid = model.PK_FirstNameID;
            v_FirstNames fn = new v_FirstNames();
            fn.fk_DemographicsID = model.fk_DemographicsID;
            fn.CurrentFirstName = model.CurrentFirstName;
            fn.FirstName = model.FirstName.ToUpper();

            if (pkid > 0)
            {
                fn.PK_FirstNameID = model.PK_FirstNameID;
                unitOfWork.DemographicsFirstNamesRepository.Update(fn);
            }
            else
            {
                unitOfWork.DemographicsFirstNamesRepository.Insert(fn);
            }
            unitOfWork.Save();
            var vm = GetDemographicsViewModel(fkid);
            UpdateDocumentToDemographicsIndex(fn.fk_DemographicsID);
            if (fn.CurrentFirstName == true)
            {
                UpdateDocumentToAccessionIndex(fn.fk_DemographicsID);
            }
            return PartialView("_FirstNamesDetail", vm);
        }
        catch (DataException ex)
        {
            //Log the error (add a variable name after DataException)
        }
    }
    else
    {
        // error handling
    }
}

1 个答案:

答案 0 :(得分:0)

您是否已将记录标记为已修改?

newContext.Entry(sqlEntry).State = EntityState.Modified;