Generic Repository. FindByID
本文关键字:FindByID Repository Generic | 更新日期: 2023-09-27 18:08:31
我正在玩一个非hibernate的通用repo,但我不确定如何使一个方法返回一个实体返回ID
public class NhibernateRepo : INhibernateRepo
{
private readonly ISession session;
public NhibernateRepo(ISession session)
{
this.session = session;
}
public void Create<T>(T entity)
{
session.Save(entity);
}
public void CreateOrUpdate<T>(T entity)
{
session.SaveOrUpdate(entity);
}
public void Delete<T>(T entity)
{
session.Delete(entity);
}
public void Update<T>(T entity)
{
session.Update(entity);
}
public T Get<T>(object id)
{
return session.Get<T>(id);
}
public T Load<T>(object id)
{
return session.Load<T>(id);
}
public void ReadOnly(object entity, bool readOnly = true)
{
session.SetReadOnly(entity, readOnly);
}
public void Evict(object entity)
{
session.Evict(entity);
}
public object Merge(object entity)
{
return session.Merge(entity);
}
public IEnumerable<T> FindAll<T>()
{
return session.Query<T>();
}
}
您可以在存储库接口中定义此方法:
interface IRepository<TEntity, TId> where TEntity : class {
TEntity FindById(TId id);
...
}
在存储库实现中:
class Repository<TEntity, TId> : IRepository<TEntity, TId> where TEntity : class{
public TEntity FindById(TId id) {
return _session.Get<TEntity>(id);
}
}
作为旁注,从领域驱动设计的角度来看,通用存储库接口有时被认为是一个不好的实践。