2013-01-25 90 views
1

我嘗試使用實體框架將現有用戶對象更新爲數據庫。使用導航屬性更新/添加/刪除EF屬性不適用於ApplyCurrentValues

我新增了一些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; 
    } 
} 

我怎麼能增加在實體框架的用戶的/刪除/更新的最愛嗎?什麼是正確的做法?

回答

0

EntityCollection<UserFavourite>需要是虛擬的。