我有一个使用 NHibernate 的通用存储库,其中 ID 的类型也是通用参数:
/// <summary>
/// Represents a common base class for repositories.
/// </summary>
/// <typeparam name="TEntity"> The type of the entity. </typeparam>
/// <typeparam name="TId"> The type of the ID of the entity. </typeparam>
public abstract class RepositoryBase<TEntity, TId> : IRepository<TEntity, TId> where TEntity : EntityBase<TEntity, TId>
在这种情况下,如何实现一个Contains
对 NHibernate 快速且可读的通用方法?
public bool Contains(TId id)
{
using (var session = NHibernateHelper.OpenSession())
{
// throws an excpetion that Equals is not supported
return session.QueryOver<TEntity>().Where(e => e.Id.Equals(id)).RowCount() > 0;
}
}
更新:
在我的情况下,NHibernate 已经关闭了延迟加载。