我是 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);
}
看起来不错,但是我怎样才能以这种方式使用延迟加载呢?我不想在每次获取User时都获取UserGroups。
我的想法是这样修改我的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实例。