WPF/MVVM/EF-如何绑定到实体';中国的相关实体?

WPF/MVVM/EF-如何绑定到实体';中国的相关实体?,wpf,entity-framework,mvvm,ef-code-first,devexpress-wpf,Wpf,Entity Framework,Mvvm,Ef Code First,Devexpress Wpf,我有一个与用户实体对应的详细视图。每个用户实体都有一个或多个注释实体,它们在详图视图中表示为网格 因此,按照EF约定,用户模型有一个UserComments成员来表示关系: public partial class User { public int UserID { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public virt

我有一个与用户实体对应的详细视图。每个用户实体都有一个或多个注释实体,它们在详图视图中表示为网格

因此,按照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; }
    //....
}
公共部分类用户
{
public int UserID{get;set;}
公共字符串名{get;set;}
公共字符串LastName{get;set;}
公共虚拟ICollection用户注释{get;set;}
//....
}
在用户详细信息视图中创建用户评论网格时,我意识到网格没有正确绑定到ICollection(无法向网格添加新行)。经过一番挖掘,我发现我需要使用ObserverVableCollection。好的,所以我将我的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);
    }

}
公共类UserDetailViewModel
{
公共虚拟用户UserData{get;set;}
私有可观察收集用户评论;
公共ObservableCollection用户评论{
获取{return\u UserComments;}
}
公共无效加载(int UserID)
{
this.UserData=UserRepo.Find(UserID);
这._UserComments=newobserveCollection(UserData.UserComments);
}
}
酷。我现在可以向网格中添加行了。但是

在这一点上,我意识到通过将User.UserComments转换为ObservableCollection,我已经失去了EF更改跟踪,并且没有简单的方法将修改/新的注释恢复到EF中


那么我是不是完全错了?是否有更好的方法更新相关数据?

为了让EF跟踪集合更改,您需要在模型本身的集合中添加和删除

  • 处理
    UserDetailViewModel.UserComments
    的添加/删除事件,并修改那里的
    User.UserComments
    集合
  • 这也可能有帮助:

    为了让EF跟踪集合更改,您需要在模型本身的集合中添加和删除

  • 处理
    UserDetailViewModel.UserComments
    的添加/删除事件,并修改那里的
    User.UserComments
    集合
  • 这也可能有帮助:

    为了让EF跟踪集合更改,您需要在模型本身的集合中添加和删除

  • 处理
    UserDetailViewModel.UserComments
    的添加/删除事件,并修改那里的
    User.UserComments
    集合
  • 这也可能有帮助:

    为了让EF跟踪集合更改,您需要在模型本身的集合中添加和删除

  • 处理
    UserDetailViewModel.UserComments
    的添加/删除事件,并修改那里的
    User.UserComments
    集合
  • 这也可能有帮助:

    谢谢。我不知道使用ObserverableCollection(而不是ICollection)与实体框架“兼容”。我想我应该查一下。我必须做一个明确的演员阵容。。。你希望模型课是什么样子?谢谢。我不知道使用ObserverableCollection(而不是ICollection)与实体框架“兼容”。我想我应该查一下。我必须做一个明确的演员阵容。。。你希望模型课是什么样子?谢谢。我不知道使用ObserverableCollection(而不是ICollection)与实体框架“兼容”。我想我应该查一下。我必须做一个明确的演员阵容。。。你希望模型课是什么样子?谢谢。我不知道使用ObserverableCollection(而不是ICollection)与实体框架“兼容”。我想我应该查一下。我必须做一个明确的演员阵容。。。您希望模型类是什么样子的?
    this._UserComments = new ObservableCollection<UserComment>(UserData.UserComments);
    
    public class UserDetailViewModel
    {
        public virtual User UserData { get; set; }     
    
        public ObservableCollection<UserComment> UserComments 
        {
            get { return UserData.UserComments; }
        }
    
        // other stuff...
    }