を使用してASP.NET MVC 3
います。
リポジトリ層でどれだけのことが起こるかについて、私はまだ混乱しています。私は常に、必要なことだけを行う必要があり、それ以上のことは何もしないという仮定の下にありました.
私は常に、リポジトリ レイヤーを呼び出すサービス レイヤーを使用してきました。アイテムのリストを取得するだけの場合でも、リポジトリ レイヤーに対応するサービス レイヤーと、リポジトリ メソッドに対応するサービス レイヤー メソッドが常にありました。したがって、次のサービス層があります。
public class UnitService : IUnitService
{
private readonly IUnitRepository unitRepository;
public UnitService(IUnitRepository unitRepository)
{
this.unitRepository = unitRepository;
}
public IEnumerable<Unit> GetAll()
{
return unitRepository.GetAll();
}
}
これは私のリポジトリ層がどのように見えるかです:
public class UnitRepository : IUnitRepository
{
// Partial code
public IEnumerable<Unit> GetAll()
{
return DbContext.Units
.Include("Department")
.OrderBy(x => x.Name);
}
}
本当に必要でない場合は、サービス層クラスを削減しようとしています。では、サービス レイヤーではなく、コントローラーからリポジトリを呼び出すだけでよいでしょうか? 自分のやり方でやるかどうかは本当に重要ですか?つまり、まだすべてのデータが戻ってきます。
キャッシングとロギングはどこで行いますか? サービスレイヤーまたはリポジトリ内? GetAll メソッドが、キャッシュする必要のある大量のレコードを返すとしましょう。これをリポジトリにキャッシュしますか、それともサービス層が必要ですか?
ロギングについても同様です。次のようなログはどこに記録しますか。
Log.Info("Adding category: {0}, {1}", entity.Id, entity.Name);
// adding code
Log.Info("Category added: {0}, {1}", entity.Id, entity.Name);