使用LINQ lambda将单个列更新为EF 6.0? MVC4

时间:2014-04-02 12:44:52

标签: linq entity-framework asp.net-mvc-4

我想在输入时在数据表中编辑某些内容时保存数据。 在输入控制上转到实际更新执行的控制器中的方法。

我的代码到此为止:

public string UpdateData(int id, string value, int? rowId, int? columnPosition, int? columnId, string columnName)
{
     var Leadsinfo = ser_obj1.Lead_List();

     if (columnPosition == 0 && Leadsinfo.Any(c => c.Contact_Name.ToLower().Equals(value.ToLower())))
         return "Lead with a name '" + value + "' already exists";
     var Lead = Leadsinfo.FirstOrDefault(c => c.Lead_Id == id);
     if (Lead == null)
     {
         return "Lead with an id = " + id + " does not exists";
     }
     switch (columnPosition)
     {
         case 0:
             Lead.Contact_Name = value;
             iWise_NeoEntities ooo = new iWise_NeoEntities();
             break;
         case 1:
             Lead.Contact_Address = value;
             break;
         case 2:
             Lead.Lead_Source = value;
             break;
         case 3:
             Lead.Domain = value;
             break;
         default:
             break;
     }
     return value;
} 

在我提到的上面的代码中,我需要编写逻辑,它应该在任何列编辑时保存到DB。使用lambda linq很容易我猜,但我甚至不知道如何开始? 我是否需要在每种情况下编写保存?

1 个答案:

答案 0 :(得分:1)

您可以在数据库中创建更新方法:

public void UpdateLead(Lead model)
{
    var entity = db.Set<Lead>().Find(model.Id);
    db.Entry<Lead>(entity).CurrentValues.SetValues(model);
    db.SaveChanges();
}

并在您需要的地方使用它:

switch (columnPosition)
{
     case 0:       Lead.Contact_Name = value;      break;
     case 1:       Lead.Contact_Address = value;   break;
     case 2:       Lead.Lead_Source = value;       break;
     case 3:       Lead.Domain = value;            break;
     default:                                      break;
}

iWise_NeoEntities ooo = new iWise_NeoEntities();

ooo.UpdateLead(Lead);