我'新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需要的视图模型。

,请注意如果你总是最终需要与一组相关的信息,其可以指向一个替代的方式来装载所有相关数据的用户。然后你才能够决定你是否想急于加载它,并保存这些额外的往返没有什么好处。

其他提示

看一看使用拦截这里。你可以把你的对象清洁,做工厂内部所有的初始化。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top