c#实体模型不能正确保存更改到SQL数据库

本文关键字:SQL 数据库 保存更改 实体模型 不能 | 更新日期: 2023-09-27 18:02:49

这是我的代码的简要总结-它是很久以前写的,有超过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

c#实体模型不能正确保存更改到SQL数据库

我想也许这是在实体框架的某个地方出了问题。在大量的混乱之后,删除模型并重新添加它似乎解决了这个问题。