草庐IT

NHIBERNATE

全部标签

c# - 使用 Moq 模拟 NHibernate ISession

我正在使用NHibernate、ASP.NETMVC2.0和StructureMap开始一个新项目,并使用NUnit和Moq进行测试。对于我的每个Controller,我都有一个公共(public)构造函数,其中注入(inject)了一个ISession。应用程序本身运行良好,但就单元测试而言,我基本上必须模拟一个ISession才能测试Controller。当我尝试使用MOQ模拟ISession时,我收到以下错误消息:Onlypropertyaccessesaresupportedinintermediateinvocations看来我的问题是期待来自框架CreateQuery方法的

c# - 在使用 Fluent NHibernate 映射时对接口(interface)进行编程

我已被迫屈服并开始学习FluentNHibernate(之前没有NHibernate经验)。在我的项目中,我正在对接口(interface)进行编程以减少耦合等。这意味着几乎“一切”都指的是接口(interface)而不是具体类型(IMessage而不是Message)。这背后的想法是通过能够模拟依赖关系来帮助提高它的可测试性。但是,当我尝试映射到接口(interface)而不是具体类时,(流畅的)NHibernate并不喜欢它。问题很简单——根据FluentWiki,定义我的类的ID字段是明智的,例如intId{get;privateset;}获取典型的自动生成的主键。但是,这仅适用

c# - NHibernate DuplicateMappingException 当两个类具有相同的名称但不同的命名空间时

我的域模型根中有一个类,如下所示:namespaceDomain{publicclassFoo{...}}我在不同的命名空间中还有另一个同名的类:namespaceDomain.SubDomain{publicclassFoo{...}}对于我的映射,我有一个Mapping目录和一个名为SubDomain的子目录,其中包含在Domain.SubDomain中找到的域类的映射命名空间。它们都在同一个程序集中。但是,当我尝试使用NHibernate加载它们时,我不断收到DuplicateMappingException...即使两个Foos具有不同的命名空间。我用来加载我的NHiberna

c# - NHibernate Definitive Cascade 应用指南

是否有任何Internet资源对NHibernate的所有级联设置都有明确的指南,其中包括类结构的示例、HBM以及每个级联设置对与NH的所有关系的操作的影响。如果有以最正确的方式完成常见关联的示例,例如设置一个状态表,您将永远不会级联删除一个状态,或者删除一个具有CreatedBy的对象,这也会很有帮助用户属性永远不会以级联等方式删除用户。 最佳答案 以下内容改编自JavaHibernate引用http://docs.jboss.org/hibernate/stable/core/manual/en-US/html/objectst

c# - NHibernate HQL Generator 支持 SQL Server 2016 时态表

我正在尝试在NHibernate4.x中实现对SQLServer2016时态表的基本支持。这个想法是改变SQL语句从SELECT*FROMTablet0到SELECT*FROMTableFORSYSTEM_TIMEASOF'2018-01-1600:00:00't0您可以在SQLServer2016中找到有关时态表的更多信息here不幸的是,我还没有找到任何方法来在表名及其别名之间插入FORFORSYSTEM_TIMEASOF'...'语句。我不确定自定义方言是否支持这一点。我目前唯一可行的解​​决方案是在额外的WHERE中附加FORSYSTEM_TIME语句,我的输出SQL如下所示S

c# - 如何告诉 Fluent NHibernate 不要映射类属性

我有一个在fluentnhibernate中映射的类,但我希望映射忽略其中一个类属性。使用下面的类和映射我得到这个错误:以下类型不能用作代理:iMasterengine.Data.Model.Calendar:get_HasEvents方法应该是虚拟的//myclasspublicclassCalendar:IEntity{publicvirtualintId{get;privateset;}publicvirtualstringName{get;set;}publicvirtualstringSiteId{get;set;}publicvirtualIListEvents{get;s

c# - NHibernate 3.2 Loquacious API 入门

我正在开始一个新项目,我想使用NHibernate3.2。我知道它现在可以做类似于FluentNHibernate的事情,我想试一试。但是我很难找到有关LoquaciousAPI的文档。我看过blogposts关于如何配置ISessionFactory,但在此之后我迷路了。我知道3.2API正在快速发展,大约3到4个月前的那篇文章已经过时,但我正在寻找最新信息。我在哪里可以找到有关的资源:如何在不使用XML、不使用FluentNHibernate和不使用ConfORM的情况下设置NHibernate3.2?如何注册映射?如何创建约定?请记住,这是关于NHibernate3.2(可能更高

c# - Fluent NHibernate 实体 HasMany 不同子类类型的集合

因此,基本鉴别器映射一切正常。我可以毫无问题地直接与实体A和B交互。publicclassBaseType{}publicclassEntityA:BaseType{}publicclassEntityB:BaseType{}这在BaseType映射中没有戏剧性的映射为DiscriminateSubClassesOnColumn("Type").SubClass("A",m=>{}).SubClass("B",m=>{});问题发生在:在聚合中我们想将集合映射到每个子类像下面这样使用映射publicclassAggregateMap:BaseMap{publicAggregateMap

c# - 有人能更好地解释 nHibernate 中的 'Projections' 是什么吗?

作为nHibernate及其实用程序库fluentnhibernate的新用户,我正在尝试学习足够多的知识,以便使用一个好的数据库来应对危险。我在理解投影的概念时遇到了很大的困难。具体来说,它们到底是什么?我确实对“什么是投影?”和“nHibernate中的项目”和“nHibernate、投影、定义”进行了精确搜索'等。我仍然很困惑。到目前为止最有用的帖子是ThisotherStackOverflowQuestion和ThisBlogPostbyColinRamsay.但我仍然非常困惑。我对数据库的了解充其量只是入门级的。我真的不明白投影是什么,为什么我要使用它们,它们正在完成什么,等

c# - 流利的 NHibernate,使用接口(interface)

我刚切换到FluentNHibernate,我遇到了一个问题,但没有找到任何相关信息。情况是这样的:publicclassField:DomainObject,IField{publicField(){}publicvirtualstringName{get;set;}publicvirtualstringContactPerson{get;set;}publicvirtualboolPrivate{get;set;}publicvirtualIAddressAddress{get;set;}}IAddress是由名为Address的类实现的接口(interface)publiccla