2

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

4

2 に答える 2

3

User を取得するたびに UserGroup を取得したくありません。

次に、それらをオブジェクト モデルで結び付けないでください。やればやるほど複雑になっていきます。

ビューに単一のインスタンスを渡すためにそれを行っている場合は、必要な一連の情報を備えたビューモデルを作成できます。

一連の関連情報を常にユーザーに提供する必要がある場合は注意してください。これは、関連するすべてのデータをロードする別の方法を示している可能性があります。そして、それを熱心にロードするかどうかを決定し、何の役にも立たない余分な往復を節約できるようになります。

于 2009-12-01T06:43:41.940 に答える
0

インターセプターの使用についてはこちらをご覧ください。オブジェクトをきれいに保ち、工場内ですべての初期化を行うことができます。

于 2009-12-01T14:08:24.453 に答える