【发布时间】:2011-11-09 21:32:24
【问题描述】:
我想更新“帖子”并更改与之前已创建的“类别”的关系。帖子实体具有类别的 ICollection。但是类别没有改变。看来,EF 不跟踪实体关系。顺便说一句,我可以通过分配类别来创建新帖子。
有两种型号:
public class Post
{
public virtual int PostId { get; set; }
...
public virtual ICollection<Category> Categories { get; set; }
}
public class Category
{
public virtual int CategoryId { get; set; }
...
public virtual ICollection<Post> Posts { get; set; }
}
添加控制器,按预期工作:
public ActionResult Create(Post model)
{
var c = Request.Form["CategoryID"].Split(',');
model.Categories = c.Select ... .ToList(); //here I assign relationships with attached objects
_repository.Add(model);
_repository.SaveChanges();
...
}
存储库添加方法:
T IRepository.Add<T>(T entity)
{
return Set<T>().Add(entity);
}
Edit 控制器不保存更改的类别,仅发布道具。
public ActionResult Edit(Post model)
{
var c = Request.Form["CategoryID"].Split(',');
model.Categories = c.Select ... .ToList(); //here I update relationships with attached objects
_repository.Attach(model);
_repository.SaveChanges();
...
}
存储库编辑方法:
T IRepository.Attach<T>(T entity)
{
var entry = Entry(entity);
entry.State = System.Data.EntityState.Modified;
return entity;
}
我做错了吗?
提前致谢
【问题讨论】:
标签: asp.net asp.net-mvc entity-framework asp.net-mvc-3 entity-framework-4