Я новичок в ASP.NET MVC, IoC, POCO и т. Д. Поэтому я хочу знать, нормально ли использовать такую архитектуру.
Это мой демонстрационный проект.
Project.Core ( на эту сборку ссылается весь проект )
public class User
{
public string Name {get; set;}
public List<UserGroup> UserGroups{get; set}
}
public class UserGroup
{
public string Title{get; set;}
}
public interface IUserService
{
User GetById(int id);
}
public interface IUserGroupService
{
List<UserGroup> GetByUser(User user);
}
выглядит хорошо, но как я могу использовать ленивую загрузку таким образом? Я не хочу получать Группы пользователей каждый раз, когда я получаю Пользователь .
Моя идея состоит в том, чтобы изменить мой Пользователь класс таким образом:
public class User
{
public string Name {get; set;}
public List<UserGroup> UserGroups
{
get { return _groups ?? (_groups = Services.UserGroupService.GetByUser(this)); }
set { _group = value;}
}
}
public class Services
{
// this class populates some kind with Unity
public static IUserGroupService UserGroupService {get; set;}
}
В чем недостаток моего решения? Мне не нравится, что мой объект POCO использует IUserGroupService instance.