草庐IT

NHIBERNATE

全部标签

c# - 使用扩展方法中定义的查询进行单元测试

在我的项目中,我使用以下方法从数据库中查询数据:使用可以返回任何类型且不绑定(bind)到一种类型的通用存储库,即IRepository.Get而不是IRepository.Get.NHibernatesISession是此类存储库的示例。在IQueryable上使用扩展方法具有特定的T封装重复查询,例如publicstaticIQueryableByInvoiceType(thisIQueryableq,InvoiceTypeinvoiceType){returnq.Where(x=>x.InvoiceType==invoiceType);}用法是这样的:varresult=sess

c# - 使用 Nhibernate 时,检查 C# .Net 中的列表相等性不起作用

我似乎在检查列表相等性时遇到了问题。在我的例子中,我有两个角色对象,我想看看它们是否相等。每个角色都包含一个名称和一个权限列表。每个权限仅包含一个名称。publicclassRole:BaseDomain{virtualpublicStringName{get;set;}virtualpublicIListPermissions{get;set;}}publicclassPermission{virtualpublicStringName{get;set;}}我在Role和Permission对象上定义了一个equals方法。这些对象是使用Nhibernate从数据库中加载的。这意味着

c# - NHibernate session 管理和延迟加载

我花了很多时间试图找出我在NHibernate中的session管理问题。我假设我的很多麻烦是由于缺乏对IoC和AOP概念的了解;至少我是这么想的,因为FabioMaulo一直在指导我。无论如何,我的问题是我有一个win表单应用程序正在进行“获取”调用并将结果绑定(bind)到网格。绑定(bind)后,用户可能会执行某种“写入”操作,这些操作会导致session在写入后关闭,以尝试使用session每次使用的概念。然后用户可能会滚动网格,这会导致延迟加载开始,现在session已关闭,我得到一个异常。我不想让我的View识别我的session,我不想在用户关闭表单时发送KillAllS

java - Hibernate:避免一次将所有记录读入内存

我在数据库中有大量行,我需要从中创建一个XML文档。我正在使用hibernate3。Criteria和Query接口(interface)中的基本list()方法看起来很危险:我怀疑它几乎必须将所有记录读入内存,即使我只迭代它们也是如此。还是有一些延迟加载魔术?如果没有,我似乎还有两个选择:使用Query中的scroll()或iterate()(滚动也存在于Criteria中)。如果我想要最少的SQL往返,iterate看起来也不是那么好:“第一个SQL查询仅返回标识符”。所以我是对的,我必须为此使用scroll()吗? 最佳答案

java - Hibernate 二级查询缓存不工作急切获取

在NHibernateProfiler中,我观察到当我对关联使用预取时,在HQL查询中使用“左连接获取”或在标准查询中使用.SetFetchMode()时,查询不再缓存在查询缓存中。事实上,据我所知,只有非常基本的查询被缓存。如果有人可以让我深入了解哪些查询被缓存,哪些不被缓存,我将标记为答案。如果有任何不同,我正在使用Memcached...。对于查询密集型系统,L2缓存是否有更好的选择?我发现这相当具有挑战性-如果我不使用预先加载,我会遇到N+1问题(但使用缓存),如果我使用预先加载,我会从数据库中获取所有实体,但没有缓存。似乎有一条很粗的分界线,两种策略都有性能改进,但两种策略都

java - (N)Hibernate "session-per-application"被认为是特定用例的邪恶?

好的,每个人都知道不鼓励使用(N)Hibernate的全局session每个应用程序。但是我有一个非常具体的、显然是非标准的用例,它似乎是理想的解决方案。总而言之,我的(服务器)应用程序的所有持久数据基本上都在内存中,并且从不查询数据库以进行正常操作。首先使用数据库的唯一原因是数据在进程的生命周期内存活。我只想在应用程序启动时查询数据库以将所有内容提取到内存中。实际上,该数据库只有大约5-10MB。现在的问题是,如果我遵循session必须是短暂的建议,我必须为每个业务交易合并()我的所有数据,或者以某种方式手动跟踪所有更改,而不是利用NHibernate的自动更改跟踪。这使得持久性很

java - Hibernate有没有类似于Nhibernate "Mapping by code"的东西

在Nhibernate中,我们有FluentNhibernate,现在,在Nhibernate3.2中有内置的“按代码映射”功能。两者都允许您以编程方式为您的域构建映射,我们可以编写一些约定来映射所有域,或者我们可以为每个相应的域对象编写单独的类。Hibernate有类似的东西吗? 最佳答案 您应该能够通过使用Hibernate配置API在没有XML和注释的情况下配置Hibernate,请参阅http://docs.jboss.org/hibernate/orm/4.1/javadocs/org/hibernate/cfg/Conf

nhibernate - 如何删除 NHibernateMessageModule 在 NServiceBus 中的调用?

我没有使用nhibernatesaga持久性,因此我不需要NHibernateMessageModule。那么我该如何删除它呢? 最佳答案 您必须在启动总线之前从容器中移除模块,因为之后它会被缓存。您可以通过在.CreateBus().Start()之前调用.RunCustomAction()并在其中包含您的代码来执行此操作。在内部,CaSTLeWindsorBuilder这样做:Component.For(GetAllServiceTypesFor(concreteComponent)).ImplementedBy(concret

nhibernate流利的镜像

有人知道我如何在两个桌子之间镜像。我的意思是,我希望输入表A的每个数据都会自动输入到表B。我想在没有两次的情况下执行此操作以保存每个表的功能谢谢看答案您可以通过查看LINQ来加入表。请看一下帖子似乎其他人也有类似的问题。干杯!

在NHIBERNATE会话中恢复已删除的实例

我删除如下所示的对象NHibernate:varobj=session.Get(some_guid);session.Delete(obj);该对象现在是瞬态的,并且MyModel具有ID的对象some_guid被标记为已删除对象NHibernate会议。后来在我的旧应用程序中,我需要取消删除一些对象在会话中删除。我在下面尝试了解决方法,但没有运气:vare=((SessionImpl)session).PersistenceContext.EntityEntries;varallEntities=e.Keys.Cast().ToList();varitem=allEntities.First