C#Entity Model无法正确保存对SQL数据库的更改

时间:2015-07-14 13:51:00

标签: c# sql asp.net-mvc entity-framework

以下是我的代码的简短摘要 - 它是很久以前编写的,并且有超过50个属性都以这种方式编写,但当我在模型和ViewModel中添加一个新属性时,它拒绝保存变化:

从我的观点来看:

@Html.EditorFor(m => m.PhoneNumber )

从ViewModel我有:

public string Registration {get;set;}

我们有控制器:

public async Task<ActionResult> SaveVehicleInfo(VehicleViewModel VM){

    Vehicle vehicle = Mapper.Map<VehicleViewModel, Vehicle>(VM); (Automapper library)
    var changes = false;
    Vehicle dbVehicle = await context.Vehicles.FindAsync(vehicle.ID)

    //A load more properties etc

    string PhoneNumberChange = "";
    if (dbVehicle.PhoneNumber != vehicle.PhoneNumber)
    {
        PhoneNumberChange = " - Phone Number changed to " + vehicle.PhoneNumber + " from " + dbVehicle.PhoneNumber;
        dbVehicle.PhoneNumber = vehicle.PhoneNumber;
        changes = true;
    }

    //At the end:

    _db.Vehicles.Attach(dbVehicle);
    _db.Entry(dbVehicle).State = EntityState.Modified;
    _db.Notes.Add(note);

    try
    {
        await _db.SaveChangesAsync();
    }
    catch (Exception e) {
        var str = "";
    }
    return #stuff#;
}

我知道这不是最好的方法,正如我所说的那样是很久以前写的。

在此行中检查项目dbVehicle:

    _db.Entry(dbVehicle).State = EntityState.Modified;

它正确地将dbVehicle.PhoneNumber显示为我的新值。它也表明了这一点:

        PhoneNumberChange = " - Phone Number changed to NEWVALUE from OLDVALUE"

save语句会通过,但SQL日志不会显示PhoneNumber,甚至包含在UPDATE语句中。所有其他值保存正确,除了我刚刚完成的这个新值。我可以在数据库中手动输入它,savechangesasync方法会触发而不会抛出任何东西,我只是无法弄清楚它为什么会这样做。

已清理/重建整个解决方案。不知道发生了什么。

实体框架第6版。

0 个答案:

没有答案