NHibernate是.NET框架的成熟的开源对象关系映射器(ORM)。
定期 - 无法将索引 Y 处的 Unicode 字符 X 转换为指定的代码页
在我们的生产站点(这是一个 .net 4 托管的 WCF 应用程序)中,我们对产品进行了升级,现在是 .net 4(之前是 .net 3.5)。这是一个大型产品,在
流畅的nhibernate一对多映射,无需References方法
假设我有两个通过一二多相关的类: 公开课客户 { 公共虚拟 Guid Id {get;放;} 公共虚拟字符串名称{get;放;} 公共虚拟 IList ...
我有两个实体,一个团队和一个员工。 我想要一份拥有热切的团队的员工名单。该列表必须分页。 公共 PagedList GetAllEmployeesWithEagerLoadedTeams...
当使用 SetFirstResult(start) 和 SetMaxResults(count) 方法来实现分页时,我注意到生成的查询只执行 select top count * from some_table 并且不采取 s...
向 NHibernate 标准添加投影会阻止其执行默认实体选择
我正在编写一个 NHibernate 标准来选择支持分页的数据。我正在使用 SQL Server 2005(+) 中的 COUNT(*) OVER() 表达式来获取可用行的总数,如建议的...
假设我有一个域模型,其中有一个名为 Blog 的类,该类有一个名为 BlogEntries 的属性(包含 BlogEntry 类型的对象)。如果我有一个包含两个表“博客”的数据库模型...
C# 休眠 | PL/SQL Oracle - 包含变音符号时字符串的长度不同
我有示例字符串,我试图使用 nhibernate ISession 对象将其作为值放入 VARCHAR(255) 列(在 Oracle 数据库中)。 absssssssssssssssssssssss
Oracle 10g 分页使用“rownum”和 NHibernate 返回错误的结果集
目前,当我使用 Oracle 10g 和 NHibernate 分页数据时,我在应用程序中遇到了一些奇怪的行为。 我有一个包含 20 行的表,我想在列表中显示每个站点 10 行,所以我的...
LINQ-to-NHibernate:无法将 Linq Skip() 和 Take() 与 FetchMany 一起使用
我有这些实体: 公共类 BlogPost { 公共虚拟int Id { 得到;放; } 公共虚拟 IList 关键字 { get;放; } 公共虚拟 IList Co...
大型表(10,000,000 行)上的 Nhibernate 分页性能
我有一个相当大的表,大约有 10,000,000 行。 我需要从我的 C# 应用程序中翻阅此表。 我正在使用 NHibernate。 我尝试使用这个代码示例: 返回会话。
我有这样的问题,这似乎很常见,但事实上SO和谷歌的解决方案都不适合我。 让我们考虑这样的情况(与我的非常相似): 公开课用户 {
我目前正在编写一个非常基本的在线论坛,我想检索带有分页帖子子集合的线程。所以我的映射是: 我目前正在编写一个非常基本的在线论坛,我想检索带有分页帖子子集合的线程。所以我的映射是: <class name="Thread" table="ForumThreads"> <id name="Id"> <generator class="identity"></generator> </id> <property name="Title"></property> <bag name="Posts"> <key column="ThreadID"></key> <one-to-many class="Post"/> </bag> </class> <class name="Post" table="ForumPosts"> <id name="Id"> <generator class="identity"></generator> </id> <property name="Content"></property> <many-to-one name="Thread" class="Thread" column="ThreadID"> </many-to-one> </class> 我想做这样的事情: public class Thread { public virtual int Id { get; set; } public virtual string Title { get; set; } public virtual IEnumerable<Post> Posts { get; set; } } public class Post { public virtual int Id { get; set; } public virtual Thread Thread { get; set; } public virtual string Content { get; set; } } public Thread GetThread(int threadId, int page, int pageSize, out int count) { var session = SessionFactory.CurrentSession; // Query to get the thread with a child collection of paged posts. return thread; } 是否可以通过一个查询来完成此操作,还是必须将其分成两个? 谢谢 var threadId = ... session.QueryOver<Thread> .Where(thread => thread.Id == threadId) .Fetch(thread => thread.Posts).Eager .Take(pageSize) .Skip(page) .TransformUsing(Transformers.DistinctRootEntity) .List<Thread>(); 如果您正在考虑进行数据库级分页,那么方法将是这样的, 你必须使用集合来支持额外模式的延迟加载 您可能需要使用过滤器来加载集合,(但您不能返回线程作为结果,就好像您尝试访问集合它将加载所有帖子一样) public List<Post> GetThreadPosts(int threadId, int page, int pageSize, out int count) { var session = SessionFactory.CurrentSession; Thread thread = (Thread )session.Get(typeof(Thread ), threadId); var posts = session.CreateFilter(thread .Posts, "").SetFirstResult((page - 1) * pageSize).SetMaxResults(pageSize).List(); return posts ; }
NH 3.1 中调用 Fetch 会忽略 Skip 和 Take
我们尝试编写一个用于分页的查询,其中我们希望使用 Fetch 预先加载对象的集合,然后返回该对象的分页列表。 下面的查询不起作用...
在 NHibernate 中分页时,有没有办法覆盖集合的映射 order-by 子句?
我有一个带有包集合的实体,我想对整个数据集进行分页。该集合有一个 order-by 子句。当我尝试急切加载集合时,NHibernate 正在生成 SQL t...
ROW_NUMBER() 和 NHibernate - 如何查找项目的页面?
给定一个 ICriteria 对象形式的查询,我想使用 NHibernate (通过投影?)来查找元素的顺序,其方式相当于使用 SELECT ROW_NUMBER() OVER (.... .
使用 HQL IQuery 时,NHibernate IQueryOver.ToRowCountQuery() 等效
我正在尝试在我的项目中实现分页。 当使用 NHibernate 的 IQueryOver 语法时,如下所示,一切都按预期工作。 公共 PagedResult 执行PagedQuery(
NHibernate:返回具有分页子集合的对象的最简单方法?
我想返回一个父对象,其中子集合急切地加载了所请求的子对象页面(子集)。 实现这一目标的最佳方法是什么? 过滤器?有可能吗...
NHiberate 3 linq 分页查询 + 数据库命中总数 1 次
我希望能够在使用分页时从 NHibernate 3 LINQ 查询中获取总行数,但仅对数据库进行 1 次命中。这可能吗? var query = (来自Session.Query中的c<
在我的 ASP.NET Web 应用程序中,我使用 NHibernate 来保存我的“用户”实例,其中每个实例都有一个“条目”集合。这是典型的一对多映射,并且工作得很好。映射-
使用 LINQ to NHibernate 将 LINQ IQueryable 转换为分页 IQueryable
我想做这样的事 公共 IQueryable GetPaged(IQueryable 查询,int startIndex,int pageSize) { 返回 GetSession() .Linq 我想做这样的事情 public IQueryable GetPaged<TSource>(IQueryable<TSource> query, int startIndex, int pageSize) { return GetSession() .Linq<TSource>() .UseQuery(query) .Take(pageSize) .Skip(startIndex); } 因此,您可以放置 any IQuerable 语句和“它会被分页”,否则它将被分页。 我正在使用 LINQ to NHibernate。 我希望你能明白,抱歉英语不好:o 编辑:也许我的方法是错误的,是吗? 这是从工作代码复制的: public static class QueryableExtensions { public static IQueryable<T> Paged<T>(this IQueryable<T> source, int page, int pageSize) { return source .Skip((page - 1) * pageSize) .Take(pageSize); } } return query.skip(startIndex).take(pageSize);