【问题标题】:Unable to save off DB changes using Entity Framework无法使用实体框架保存数据库更改
【发布时间】:2021-02-18 14:59:44
【问题描述】:

我对 EF 世界还很陌生,我想了解为什么我无法保存对我的电话记录所做的更改。我意识到我需要修改我的实体,但它似乎没有任何区别。我曾尝试使用 context.xxxx,但我收到一个错误,即未定义上下文。上下文的用途是什么?如果我更改同一用户的电话类型,我想用新信息更新记录。

电话定义:

namespace NewSMS.DATA.EF
{
    using System;
    using System.Collections.Generic;
    
    public partial class Phone
    {
         public int Phone_ID { get; set; }
         public string Phone_Number { get; set; }
         public int User_PK1 { get; set; }
         public int LU_Phone_Type_PK1 { get; set; }

         public Nullable<bool> Available { get; set; }

         public virtual LU_Phone_Type LU_Phone_Type { get; set; }
         public virtual User User { get; set; }
    }    
}

代码:

    if (phnMems != null && phnMems.Count > 0)
    {
        var smsPhn = new Phone { };

        foreach (var item in phnMems)
        {
            smsPhn.Phone_Number = item.Phone_Number;
            smsPhn.LU_Phone_Type_PK1 = item.Phone_Type_ID;
            smsPhn.User_PK1 = obj.User_ID;
                        
            Phone phoneInfo = db.Phone.FirstOrDefault(n => n.User_PK1 == obj.User_ID);

            if (phoneInfo == null)
            {
                 db.Phone.Add(smsPhn);
                 db.SaveChanges();
            }
            else
            {                            
                 smsPhn.Phone_ID = phoneInfo.Phone_ID;  //keep userID
                 db.Entry(phoneInfo).State = EntityState.Modified;
                 phoneInfo = smsPhn;
                 db.SaveChanges();
            }
        }
    } //End IF

【问题讨论】:

    标签: sql database save


    【解决方案1】:

    smsPhn.Phone_ID = phoneInfo.Phone_ID; //保留用户ID db.Entry(phoneInfo).State = EntityState.Modified;

    在上面的代码中,您在 smsPhn 对象中分配了 phone_ID 但更新了 phoneInfo 对象。

    只是一个建议: 移动此声明 var smsPhn = 新电话 { }; 在 foreach 循环内并在循环外调用 savechanges。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-26
      • 2014-06-07
      相关资源
      最近更新 更多