2014-07-10 94 views
0

我先使用代碼。但我有更新數據的問題。c#代碼第一次更新datacontext

我的班級:

public class definition : Base 
     { 
      [Key, Column(Order = 1), DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
      public int Id { get; set; } 
      public int definition_GroupId { get; set; } 
      public int? definition_ParentId { get; set; } 
      public string definition_txt { get; set; } 
      public bool IsStatic { get; set; } 
      public bool IsDeleted { get; set; } 
     } 

我使用AjaxPost,我只發送Id和definition_txt。

if (!String.IsNullOrEmpty(param.definition_txt)) 
{ 
    definitionRepository.Attach(param); 
    UnitOfWork.Save(); 
} 

我的資料庫連接的方法是:

public void Attach(T entity) 
{ 
    _dbset.Attach(entity); 
    DataContext.Entry(entity).State = EntityState.Modified; 
} 

完成。但更新所有列,我想只更新選定的列。我能怎麼做?

+0

嘗試'DataContext.Entry(實體).Property(「definition_txt」)。IsModified = true;' – DavidG

回答

0

我會建議從數據庫中查找與方法首先加載實體,然後更新它,並保存到數據庫這樣的:

definition originalEntity = _dbset.Find(entity.Id); 
originalEntity.definition_txt = entity.definition_txt; 
+0

我想,不需要再去數據庫。 – caras

0
public void Update(T entity, string[] columns) 
     { 
      if (columns != null) 
      { 
       _dbset.Attach(entity); 
       foreach (var item in columns) 
       { 
        DataContext.Entry(entity).Property(item).IsModified = true; 
       } 
      } 
     } 

謝謝@DavidG