我有一个包含角色导航属性的用户对象。
public partial class User
{
public int UserId { get; set; }
public string UserName { get; set; }
public string UserEmail { get; set; }
public string GivenName { get; set; }
public byte[] RowVersion { get; set; }
public Nullable<int> ServiceAreaId { get; set; }
public virtual ICollection<Role> Roles { get; set; }
}
我可以更新简单的属性,而无需从数据库中读取实体,如http://www.shawnmclean.com/blog/2011/04/entity-framework-deleteupdate-without-round-trip-to-the-database/中所述
public User UpdateUser(User user, IEnumerable<Expression<Func<User, object>>> properties)
{
context.Configuration.ValidateOnSaveEnabled = false;
context.Users.Attach(user);
foreach (var selector in properties)
{
string propertyName = Utils.GetMemberInfoFromExpression(selector.Body);
context.Entry(user).Property(propertyName).IsModified = true;
}
context.SaveChanges();
return user;
}
但是,我不确定如何或是否可以为角色导航属性执行此操作。当我尝试得到“实体类型 Collection`1 不是当前上下文模型的一部分”时。例外。谢谢。