-
22-07-2019 - |
题
我'新ASP.NET MVC,国际奥委会,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 的实例。
解决方案
我不想让群组每次我'获取用户。
然后不会在对象模型一起配合他们。它变得复杂的快,你越开始这样做。
如果你正在做的手的单个实例的意见,你可以有一组信息u需要的视图模型。
,请注意如果你总是最终需要与一组相关的信息,其可以指向一个替代的方式来装载所有相关数据的用户。然后你才能够决定你是否想急于加载它,并保存这些额外的往返没有什么好处。
其他提示
看一看使用拦截这里。你可以把你的对象清洁,做工厂内部所有的初始化。
不隶属于 StackOverflow