C# NHibernate存储库
有没有人在NHibernate存储库上有适当且简化的记录? 我已经将Java、Hibernate、LCD数据服务存储库与FlexBuilder一起使用(使用rtmp通道),并希望使用C#.NET实现确切的基本功能 我已经阅读了大量的在线文档,但没有任何内容能像FlexBuilder那样反映出确切的用途 如果有人有一个小的示例应用程序,那么一定要分享。那会很有帮助的 问候 镍钛参见以下内容:C# NHibernate存储库,c#,.net,nhibernate,repository-pattern,C#,.net,Nhibernate,Repository Pattern,有没有人在NHibernate存储库上有适当且简化的记录? 我已经将Java、Hibernate、LCD数据服务存储库与FlexBuilder一起使用(使用rtmp通道),并希望使用C#.NET实现确切的基本功能 我已经阅读了大量的在线文档,但没有任何内容能像FlexBuilder那样反映出确切的用途 如果有人有一个小的示例应用程序,那么一定要分享。那会很有帮助的 问候 镍钛参见以下内容: 首先创建一个接口IRepository: public interface IRepository
IRepository
:
public interface IRepository<T>
{
int Add(T entity);
void Delete(T entity);
void Update(T entity);
T GetById(int id);
IEnumerable<T> FindAll(DetachedCriteria criteria);
...
.
.
//
}
然后:
公共类实体存储库:存储库
{
公共实体报告(IActiveSessionManager activeSessionManger)
:base(activeSessionManger)
{
}
公共实体GetByName(字符串名称)
{
var-criteria=NHibernate.criteria.DetachedCriteria.For()
.添加(限制条件、等式(“名称”);
返回FindOne(标准);
}
公共IList returnsomething()
{
}
....
}
这是此模式的基本实现,但您可以在设计驱动时对其进行装饰
我建议,在理解这些模式并实现它之后,您可以进一步检查
public class Repository<T> : IRepository<T>
{
readonly IActiveSessionManager _activeSessionManager;
protected ISession Session
{
get { return _activeSessionManager.GetActiveSession(); }
}
public Repository(IActiveSessionManager activeSessionManager)
{
_activeSessionManager = activeSessionManager;
}
public int Add(T entity)
{
int newId = (int)Session.Save(entity);
Session.Flush();
return newId;
}
.
.
// add the remaining implementations
}
public T FindOne(NHibernate.Criterion.DetachedCriteria criteria)
{
return criteria.GetExecutableCriteria(Session).UniqueResult<T>();
}
public class EntityRepository : Repository<Entity>
{
public EntityRepository(IActiveSessionManager activeSessionManger)
: base(activeSessionManger)
{
}
public Entity GetByName(string name)
{
var criteria = NHibernate.Criterion.DetachedCriteria.For<Entity>()
.Add(Restrictions.Eq("name", name));
return FindOne(criteria);
}
public IList<Entity> returnsomething()
{
}
....
}