【发布时间】: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