【发布时间】:2014-10-01 21:21:03
【问题描述】:
我在更新具有多对多关系的实体时遇到问题。在我的用户和类别类下面:
public class User : IEntity
{
[Key]
public virtual long Id { get; set; }
private ICollection<Category> _availableCategories;
public virtual ICollection<Category> AvailableCategories
{
get { return _availableCategories ?? (_availableCategories = new List<Category>()); }
set { _availableCategories = value; }
}
}
public class Category : IEntity
{
[Key]
public long Id { get; set; }
/// <summary>
/// Full name or description of a category
/// </summary>
[StringLength(255)]
public string FullName { get; set; }
}
这是我存储库中的代码 sn-p
public override void Edit(User user)
{
var dbUser = _context.Users.Include(x => x.AvailableCategories)
.Single(x => x.Id == user.Id);
var categories = _context.Categories;
dbUser.AvailableCategories.Clear();
foreach (var cat in user.AvailableCategories)
{
dbUser.AvailableCategories.Add(cat);
}
_context.Entry(dbUser).State = EntityState.Modified;
}
但是类别不会更新。 EF 所做的是将空行插入到类别表中,并与用户设置与这些新行的关系。
如何更新用户以便仅更改数据库中已存在的类别?
我传递给 Edit 方法的用户具有仅设置了 ID 的 AvailableCategories(其余属性为空)。
【问题讨论】:
标签: asp.net-mvc entity-framework-6