我有一个与用户实体相对应的详细视图。每个用户实体都有一个或多个评论实体,在详细视图上以网格表示。
所以遵循 EF 约定,用户模型有一个 UserComments 成员来表示关系:
public partial class User
{
public int UserID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public virtual ICollection<UserComments> UserComments { get; set; }
//....
}
当需要在用户详细信息视图中创建用户评论网格时,我意识到网格没有正确绑定到 ICollection(无法向网格添加新行)。经过一番挖掘,我发现我需要使用 ObservervableColletion。好的,所以我将 ICollection 转换为 ObserverableCollection ....
public class UserDetailViewModel
{
public virtual User UserData { get; set; }
private ObservableCollection<UserComments> _UserComments;
public ObservableCollection<UserComment> UserComments {
get { return _UserComments; }
}
public void Load(int UserID)
{
this.UserData = UserRepo.Find(UserID);
this._UserComments = new ObservableCollection<UserComment>(UserData.UserComments);
}
}
凉爽的。我现在可以将行添加到网格中。但...
在这一点上,我意识到我已经通过将 User.UserComments 转换为 ObservableCollection 丢失了 EF 更改跟踪,并且没有简单的方法将修改后的/新的评论返回到 EF 中。
那么我是不是把这一切都搞错了?有没有更好的方法来更新相关数据?