【问题标题】:C# Entity framework with relation OneToMany具有关系 OneToMany 的 C# 实体框架
【发布时间】:2014-11-28 23:24:29
【问题描述】:

我将实体框架与 MVC 5 (C#) 一起使用。我与我的用户实体和帖子实体有一个关系 oneToMany。我的用户可以包含许多帖子。

我有代码:

    public User getUser(String login)
    {
        ProjectEntities db = new ProjectEntities();
        var query = (from User in db.Users
                    where User.Login == login
                    select User);
        if (query.Count() == 0)
            return null;
        return query.FirstOrDefault();
    }

    public function anotherMth() {
            var user = auth.getUser(login);
            ProjectEntities db = new ProjectEntities ();
            Post p = db.Posts.OrderByDescending(c => c.ID).FirstOrDefault();
            Post post = new Post() { 
                User = user,
                ID = (null == p ? 0 : p.ID) + 1
            };
            user.Posts.Add(post);
            db.Users.Attach(user);
            db.Entry(user).Property(e => e.Posts).IsModified = true;
            db.SaveChanges();
     }

错误是:“一个实体对象不能被多个IEntityChangeTracker实例引用”

【问题讨论】:

  • auth.getUser 是做什么的?它返回的用户是否已被另一个 DbContext 跟踪?
  • 我添加了代码。我认为我的用户已经被 DbContext 跟踪。如何获取我的用户并添加帖子?
  • 我倾向于不担心分配 ID,实体框架会处理这个问题,我认为这可能是你的问题。
  • 您确定需要更新user吗?您似乎没有修改任何用户属性。

标签: c# entity-framework


【解决方案1】:

获取用户后,可以通过AsNoTracking扩展方法不跟踪获取...

http://msdn.microsoft.com/en-gb/data/jj556203.aspx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-01
    相关资源
    最近更新 更多