Каков наилучший способ переместить связанные с SQL методы сущностей из контекста данных в подходящий класс? - PullRequest
0 голосов
/ 11 февраля 2012

Мне нравится EntityFramework. Обычно я создаю сервисный класс (макет), чтобы поместить туда логику взаимодействия с базой данных. Это выглядит так:

public class UserService
{
    MyDbContext _context;

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

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

И я использую это где-то в моем коде:

userService.MoveUserToGroup(User user, Group group);

Это хорошо, но я бы хотел, чтобы мои занятия выглядели так:

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

public class Group
{
    // ...
    public void Add(User user) { ... }
}

И я хочу использовать это так:

user.AddToGroup(group);

Каков наилучший способ сделать это? DI? Расширения? Как сохранить контекст базы данных в моих классах?

1 Ответ

0 голосов
/ 11 февраля 2012

Вы обычно отображаете все связанные навигационные свойства объекта.

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

    public void AddTo(Group group) 
    { 
       Groups.Add(group);
    }
}
...