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インスタンスを使用するのが好きではありません。