c#代码优先更新数据上下文

c#代码优先更新数据上下文,c#,entity-framework,code-first,C#,Entity Framework,Code First,我先用代码。但我对更新数据有问题 我的班级是: public class definition : Base { [Key, Column(Order = 1), DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int Id { get; set; } public int definition_GroupId { get; set; }

我先用代码。但我对更新数据有问题

我的班级是:

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;
}

完成了。但是更新所有列,我只想更新选定的列。我该怎么做?

我建议先用Find方法从db加载实体,然后更新实体并保存到db,如下所示:

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

谢谢@DavidG

Try
DataContext.Entry(entity.Property(“definition_txt”)。IsModified=true我认为,无需再次访问数据库。
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;
                }
            }
        }