Entity framework 将实体的sql链接方法从数据上下文移动到entitiy类的最佳方法是什么?

Entity framework 将实体的sql链接方法从数据上下文移动到entitiy类的最佳方法是什么?,entity-framework,architecture,datacontext,Entity Framework,Architecture,Datacontext,我喜欢实体框架。通常,我创建一个服务类(布局),将与数据库交互的逻辑放在那里。看起来是这样的: public class UserService { MyDbContext _context; public UserService(MyDBContext context) { _context = context; } public void MoveUserToGroup(User user, Group group)) { ...

我喜欢实体框架。通常,我创建一个服务类(布局),将与数据库交互的逻辑放在那里。看起来是这样的:

public class UserService
{
    MyDbContext _context;

    public UserService(MyDBContext context)
    {
        _context = context;
    }

    public void MoveUserToGroup(User user, Group group)) { ... }
}
public class User
{
    // ...
    public void AddTo(Group group) { ... }
}

public class Group
{
    // ...
    public void Add(User user) { ... }
}
我在代码的某个地方使用它:

userService.MoveUserToGroup(User user, Group group);
这很好,但我希望我的课程是这样的:

public class UserService
{
    MyDbContext _context;

    public UserService(MyDBContext context)
    {
        _context = context;
    }

    public void MoveUserToGroup(User user, Group group)) { ... }
}
public class User
{
    // ...
    public void AddTo(Group group) { ... }
}

public class Group
{
    // ...
    public void Add(User user) { ... }
}
我想用它来:

user.AddToGroup(group);

最好的方法是什么?迪?扩展?如何在我的类中保持数据库上下文?

您通常会映射实体的所有相关导航属性

public class User
{
    public virtual ICollection<Group> Groups { get; set; }

    public void AddTo(Group group) 
    { 
       Groups.Add(group);
    }
}
公共类用户
{
公共虚拟ICollection组{get;set;}
公共无效添加到(组)
{ 
组。添加(组);
}
}

这是一个应由您选择的OR/M而不是DI解决的问题。