I am new to ASP.NET MVC, IoC, POCO, etc. So I want to know is it OK to use such kind of architecture.
This is my demo project.
Project.Core (this assembly referenced by all project)
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);
}
Looks good, but how can I use lazy loading this way? I don t want to get UserGroups each time I am getting User.
My idea is to modify my User class this way:
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;}
}
What is disadvantage of my solution? I don t like that my POCO object uses IUserGroupService instance.