草庐IT

Fluent-NHibernate

全部标签

c# - Fluent NHibernate Cascade - 哪一边?

在使用FluentNHibernate时,我似乎无法找到关于何时在References端与HasMany端使用级联选项的良好解释。映射以下内容有什么区别(如果有的话)...References(...).Cascade.All();对比HasMany(...).Cascade.All();我的问题源于保存父(根)实体时出现的问题。保存后,我想确保所有子对象也都保留下来。 最佳答案 您将级联放在要保存的一侧。如果保存父级,想级联给子级,将级联映射放在父级上。 关于c#-FluentNHib

c# - NHibernate 和奇数 "Session is Closed!"错误

注意:既然我已经输入了这个,我不得不为这个超长的问题道歉,但是,我认为这里提供的所有代码和信息在某种程度上都是相关的。好的,我在我的ASP.NETwebforms应用程序中随机出现奇怪的“SessionIsClosed”错误。然而,今天,它终于一次又一次地发生在同一个地方。我几乎可以肯定,我的代码中没有处理或关闭session,因为使用的代码位与所有其他代码完全分开,如下所示。我也在使用ninject作为我的IOC,这可能/可能不重要。好的,所以,首先是我的SessionFactoryProvider和SessionProvider类:SessionFactoryProviderpub

c# - 流利的 NHibernate : How to map an entire class as ReadOnly?

我有几个从非常精细的表中读取的类,这就是为什么我希望NHibernate将它们用作“ReadOnly”。在每个字段映射上建立.ReadOnly()真的很草率,我不确定我是否相信它。如何将一个类设置为完全只读的,就像我可以轻松地使用传统的XML映射一样?编辑:答案确实有效。如果我试图保存一个ReadOnly()对象,我预计它会抛出异常,但它只是默默地这样做。谢谢。 最佳答案 使用FluentNHibernate,它非常简单:classEntityMap:ClassMap{publicEntityMap(){ReadOnly();//M

c# - 拦截包含 NHibernate 生成的参数值的 SQL 语句

我使用一个简单的拦截器来拦截nhibernate为记录目的生成的sql字符串,它工作正常。publicclassSessionManagerSQLInterceptor:EmptyInterceptor,IInterceptor{NHibernate.SqlCommand.SqlStringIInterceptor.OnPrepareStatement(NHibernate.SqlCommand.SqlStringsql){NHSessionManager.Instance.NHibernateSQL=sql.ToString();returnsql;}}然而,这捕获了没有参数值的sq

c# - NHibernate 可以自动从现有类创建表吗?

我对此很陌生,但我需要从现有类创建新表,而无需手动创建它们。这可以使用工具或命令行来完成吗? 最佳答案 是的,使用nhibernate,您可以自动生成和更新模式。varcfg=newConfiguration();cfg.Configure();cfg.AddAssembly(typeof(aClassFromYourProject).Assembly);newSchemaExport(cfg).Execute(false,true,false,false);更新:SchemaExport.Execute的重载选项在3.x版本中发生

c# - NHibernate 查询只运行一次,然后抛出 InvalidCastException

我有一个简单的查询如下:varemployeeTeam=Session.Query().Where(x=>x.StartEffective.OrderByDescending(x=>x.StartEffective).Select(x=>new{x.EmployeeId,x.StartEffective,x.Team}).ToList();它成功运行了一次,但是在第二次执行时(或第三次、第四次等等)它抛出了一个无效的转换异常,例如:FatalError:System.InvalidCastException:Cannotconverttype'System.Linq.Enumerabl

c# - 流利的 nHibernate : Use the same mapping files for tables with the same structure in different schemas

这是我的映射类:classMyTableMap:ClassMap{publicMyTableMap(){Schema("mySchema");Id(x=>x.id);Map(x=>x.SomeString);}}这适用于我的第一个数据库中的表([mySchema].[MyTable])。但是这个表(“MyTable”)存在于(实际上很多)不同的数据库中,但是由于任何原因,模式总是被命名为不同的(我无法控制):因此在数据库“OtherDB”中有表[SomeOtherSchema].[MyTable],其结构与第一个数据库中的[mySchema].[MyTable]相同。出于显而易见的原因

c# - NHibernate "Could not determine type for X"错误

在项目中升级NHibernate和FluentNHibernateDLL后,我现在在初始化SessionFactory时收到“无法确定类型:MyApp.Domain.Entities.AppCategory”异常抛出。我的代码中唯一的变化是调整ForeignKeyConvention的实现以覆盖GetKeyName(Membermember,Typetype)抽象方法,而不是GetKeyName(PropertyInfoproperty,Typetype).FluentNHibernate的升级DLL从1.0.0.593到1.1.0.685,NHibernate从2.1.0.4000到

c# - .NET 4 ISet<> HashSet<> 可以替换 NHibernate Iesi.Collections ISet 和 HashSet 吗?

.NET4ISetHashSet可以替换NHibernateIesi.CollectionsISet、HashSet吗?我正在使用CaSTLe代理和NHibernate3.0。 最佳答案 是的。有两种方法:将您的收藏声明为ICollection并将其初始化为HashSet.参见thisarticle.我将集合建模为私有(private)成员并公开IEnumerable所以这很好用,但缺点是你不能公开ISet.使用JoseRomaniello的Set4Net4NuGet包。参见thisarticle和sourcecode.

c# - Fluent nhibernate 一对一映射

如何进行一对一映射。publicclassSetting{publicvirtualGuidStudentId{get;set;}publicvirtualDateFiltersTaskFilterOption{get;set;}publicvirtualstringTimeZoneId{get;set;}publicvirtualstringTimeZoneName{get;set;}publicvirtualDateTimeEndOfTerm{get;set;}publicvirtualStudentStudent{get;set;}}设置类图:publicSettingMap()