ASP.NET MVC 4 アプリケーションの学習では、リポジトリ パターンとサービス レイヤーを使用します。プロジェクトではエンティティ フレームワークと Autofac が使用されます。私のデータ クラスは単純で、ほとんどすべての操作は基本的な CRUD 操作です。
次のような抽象的なリポジトリベースがあります。
public abstract class RepositoryBase<T> where T : class
これは、Sample1 エンティティのサンプル リポジトリです。
public class Sample1Repository : RepositoryBase<Sample1>, ISample1Repository
{
public Sample1Repository(IDatabaseFactory databaseFactory)
: base(databaseFactory)
{
}
}
public interface ISample1Repository : IRepository<Sample1>
{
}
これは私のコントローラーです:
public class SampleController : Controller
{
private readonly ISampleService _sampleService;
public SampleController(ISampleService sampleService)
{
this._sampleService = sampleService;
}
}
最後に、これが私のサービスです。
public interface ISampleService
{
IEnumerable<Sample1> GetSample1s();
Sample1 GetSample1(int id);
void CreateSample1(Sample1 item);
void DeleteSample1(int id);
void SaveSample1();
}
public class SampleService : ISampleService
{
private readonly ISample1Repository _sample1Repository;
private readonly IUnitOfWork _unitOfWork;
public SampleService(ISample1Repository sample1Repository, IUnitOfWork unitOfWork)
{
this._sample1Repository = sample1Repository;
this._unitOfWork = unitOfWork;
}
}
今、私はこれらの質問があります:
1) エンティティ リポジトリごとに個別のクラスを作成する必要がありますか。(つまり、エンティティ Sample2 の別の Sample2Repository)
2) これらの CRUD タスクを実行するために汎用サービスを使用できますか?
3) 一般的なサービスが可能な場合。Autofacブートストラップに登録するにはどうすればよいですか?