【问题标题】:Can't update an entity with Poco Code Generation Item无法使用 Poco 代码生成项更新实体
【发布时间】:2012-05-05 23:44:38
【问题描述】:

我有以下场景:

我页面中的以下 2 个全局变量:

MainContext db = new MainContext();
User user = new User();

在按钮更新时调用的填充属性的方法:

private void FillProperties()
        {
            user.FirstName = txtFirstName.Text;
            user.LastName = txtLastName.Text;
            user.Email = txtEmail.Text;
        }

在按钮更新上,我正在执行以下操作:

FillProperties();
user.ID = Request.QueryString("userid");
db.SaveChanges();

但是记录没有被更新,我认为这是合乎逻辑的,因为用户变量与 db 对象无关,但是我不能这样做:

db.Users.AddObject(user);

因为在 db 属性中找不到 AddObject。

如何更新用户?

感谢您的回答。

【问题讨论】:

    标签: c# asp.net .net entity-framework poco


    【解决方案1】:

    如果您使用的是DbContext API,只需使用

    db.Entry(user).State = EntityState.Modified;
    

    【讨论】:

    • @Eranga 我认为该方案可能格式错误(例如缺少 PK/AI,序列化方案与实际方案之间的差异)
    • 现在这就是我所说的直截了当的答案。非常感谢你:)
    【解决方案2】:

    您将用户添加到数据库的哪个位置?
    如果用户存在于数据库中,为了更新它,你应该这样做,例如:

    user = db.Users.Where(x => x.ID == Request.QueryString("userid")).Single();
    FillProperties();
    db.SaveChanges();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-22
      • 1970-01-01
      • 2011-06-30
      • 1970-01-01
      相关资源
      最近更新 更多