使用导航属性更新/添加/删除EF不适用于ApplyCurrentValues

时间:2013-01-25 09:04:55

标签: c# entity-framework entity-framework-4.1

我尝试使用Entity Framework将现有用户对象更新为数据库。

我新添加了一些UserFavourite项并发送到UpdateUser方法。但它只保存Id和Name,而不是UserFavourites。

我的控制器代码

List<UserFavourite> submittedFavouriteCollection=//prepared from view

User existingDBUser = AdminService.SelectUserById(int Id);

foreach (UserFavourite fav in submittedFavouriteCollection)
   { 
      fav.Modified = currentTime;
      fav.Modifier = modifier;
      existingDBUser.UserFavourites.Add(fav);

   }
AdminService.UpdateUser(existingDBUser);

EF类骨架和更新方法

public class User{
    public int Id{get;set;}
    public string Name{get;set;}
    public EntityCollection<UserFavourite> UserFavourites{get;set;}
    //other EF properties
}

public User UpdateUser(User userToSave)
{
    using (MyContext entities = new MyContext(GetSqlConnectionString()))
    {
        var usr = from rd in entities.Users
                    where rd.Id == userToSave.Id
                    select rd;


        userToSave.Modified = DateTime.Now;

        entities.Users.ApplyCurrentValues(userToSave);

        entities.SaveChanges();
        return userToSave;
    }
 }

如何在实体框架中添加/删除/更新用户的收藏夹?什么是正确的做法?

1 个答案:

答案 0 :(得分:0)

EntityCollection<UserFavourite>需要是虚拟的。