首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过id更新记录?

如何通过id更新记录?
EN

Stack Overflow用户
提问于 2011-07-01 05:32:00
回答 3查看 132关注 0票数 1

我是EntityFramework的新手,很难理解为什么第一个代码不更新,而第二个代码更新。我的目标是在不查询db的情况下更新记录。

是不是太明显了?

代码语言:javascript
复制
using (CHATDBEntities db = new CHATDBEntities())
    {
        // update buddy
        onlines buddy = new onlines();
        buddy.id = 56;
        buddy.last_seen = DateTime.Now;
        buddy.status = (int)UserStatuses.Status.Chatting;
        buddy.connected_to_id = 34;
        buddy.room_id = 2;

        db.SaveChanges();

    }

    using (CHATDBEntities db = new CHATDBEntities())
    {
        // update buddy
        var buddy = db.onlines.First();
        buddy.last_seen = DateTime.Now;
        buddy.status = (int)UserStatuses.Status.Chatting;
        buddy.connected_to_id = 34;
        buddy.room_id = 2;

        db.SaveChanges();

    }

它看起来像是和"id“相关,id是主身份密钥。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-07-01 05:38:33

你必须检索一个实体才能更新它,你不能仅仅创建一个与数据库中的记录具有相同id的新实体,然后期望EF神奇地知道它需要更新数据库。您可以尝试将其附加到ObjectContext,但这不是您应该进行更新的方式。

票数 1
EN

Stack Overflow用户

发布于 2011-07-01 05:34:55

你可能需要将你的新伙伴添加到onlines收藏中吗?

代码语言:javascript
复制
db.onlines.Add(buddy); // << this
db.SaveChanges();
票数 0
EN

Stack Overflow用户

发布于 2011-07-01 05:35:26

原因是您需要将对象选择到ObjectContect中,然后才能对其进行更新。看起来更新实体的唯一方法是首先读取它。

请看另一个stackoverflow链接,它回答了这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6541345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档