これを行うには、データ アクセス レイヤーでリポジトリと UnitOfwork を使用します。
public interface IAggregateRoot
{
}
これは私の汎用リポジトリインターフェースです:
public interface IRepository<T>
{
IEnumerable<T> GetAll();
T FindBy(params Object[] keyValues);
void Add(T entity);
void Update(T entity);
void Delete(T entity);
}
モデルのPOCO Contactクラス
public class Contact :IAggregateRoot
{
public Guid Id { get; set; }
public string Name { get; set; }
public string Email { get; set; }
public string Title { get; set; }
public string Body { get; set; }
public DateTime CreationTime { get; set; }
}
そして、これは IRepository から継承し、おそらくそれが独自のメソッドである私の IContactRepository
public interface IContactRepository : IRepository<Contact>
{
}
今、私はこのように IUitOfWork と UnitOfwork でやった
public interface IUnitOfWork
{
IRepository<Contact> ContactRepository { get; }
}
public class UnitOfWork : IUnitOfWork
{
private readonly StatosContext _statosContext = new StatosContext();
private IRepository<Contact> _contactUsRepository;
public IRepository<Contact> ContactRepository
{
get { return _contactUsRepository ?? (_contactUsRepository = new Repository<Contact>(_statosContext)); }
}
}
私のリポジトリについても
public class Repository<T> : IRepository<T> where T : class, IAggregateRoot
{
//implementing methods
}
Service で UnitOfwork を使用してリポジトリにアクセスすることで、すべての CRUD 操作を実行できます。例:
_unitOfWork.ContactRepository.Add(contact);
_unitOfWork.SaveChanges();
しかし、私はこのようにしたい
_
ContactRepository.Add(contact);
_unitOfWork.SaveChanges();
(_unitOfWork.ContactRepository による _ContactRepository No による CRUD と汎用メソッドの取得) ContactRepository メソッドをいくつかの特定のクエリに取得したいので、誰か助けてください??