【问题标题】:EF4 Code First: how to update specific fields onlyEF4 Code First:如何仅更新特定字段
【发布时间】:2011-03-21 06:13:49
【问题描述】:

如何仅更新实体上的某些字段?

我有一个像这样的用户实体:

public class User
{
    public string UserId { get; set; }
    public string PasswordHash { get; set; }
    public bool IsDisabled { get; set; }
    public DateTime AccessExpiryDate { get; set; }
    public bool MustChangePassword { get; set; }
    public DateTime DateCreated { get; set; }
    public DateTime LastActivity { get; set; }
}

例如,如果我想更新用户实体,但不想更改用户密码,我该怎么做?

目前,我正在使用以下代码来更新实体:

using (var _cnt = new STQContext())
{
   _cnt.Entry<Item>(item).State = System.Data.EntityState.Modified;
   _cnt.SaveChanges();
   return;
}

【问题讨论】:

    标签: c# entity-framework ef-code-first entity-framework-4.1


    【解决方案1】:

    试试这个:

    using (var _cnt = new STQContext())
    {
       _cnt.Users.Attach(user);
       _cnt.Entry<User>(user).Property(u => u.PasswordHash).IsModified = true;
       _cnt.SaveChanges();
    }
    

    【讨论】:

    • 我认为他想要相反的东西......除了密码之外的一切
    • @Diego:是的,我现在看到了,但原理类似。
    • 同意。 EF 是否默认使用 NH 所谓的“动态更新”(构建仅包含修改字段的 UPDATE 语句)?
    • @Diego:有趣的问题。我会在家里检查。我相信它适用于加载的实体,但我不确定附加实体会发生什么。
    • 因为如果不这样做,代码将无法工作(即它会始终更新所有字段)
    猜你喜欢
    • 1970-01-01
    • 2021-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-21
    • 1970-01-01
    相关资源
    最近更新 更多