Tag: fluent nhibernate

NHibernate映射与类层次结构,其基类是抽象的,鉴别符不是字符串

以下是域模型类: public abstract class BaseClass { … } public class ChildClass : BaseClass { … } 请注意,父类是抽象的,这使得我在使用流畅的nhibernate进行映射时遇到了一些困难。 我的鉴别器是一个字节(DB中的tinyint)。 因为它不是一个字符串而我无法在基类上设置一个鉴别器值,所以这不起作用(取自BaseClass的映射类): DiscriminateSubClassesOnColumn(“Type”) .SubClass() .IsIdentifiedBy((byte)OperationType.Plan) .MapSubClassColumns(p => { … }) 我得到的错误信息是: 类初始化方法UnitTest1.MyClassInitialize引发exception。 NHibernate.MappingException:NHibernate.MappingException:无法将鉴别器值格式化为实体的SQL字符串BaseClass —> System.FormatException:输入字符串格式不正确.. 以下post似乎解释了会发生什么。 他们给出了一个xml的解决方案,但没有流利的nhibernate: http : //forum.hibernate.org/viewtopic.php? t = 974225 谢谢您的帮助。

流畅的NHibernate级联删除无法正常工作

我有一个使用Fluent NHibernate 1.1的简单手机目录应用程序。 在应用程序中,“Person”对象有许多“PhoneNumber”对象。 我正在尝试删除一个人,我想将删除级联到PhoneNumbers。 我在阅读完这个答案后设置了DefaultCascade.All()的约定。 但是,尝试删除父对象仍会引发exception – 似乎NHibernate正在尝试更新子表以将父ID设置为null而不是仅删除记录: {“无法删除集合:[Person.PhoneNumbers#473] [SQL:UPDATE phone_numbers SET person_id = null WHERE person_id = @ p0]”} 的InnerException: {“无法将值NULL插入列’person_id’,表’directory.dbo.phone_numbers’;列不允许空值.UPDATE失败。\ r \ n语句已终止。”} 我的Fluent配置是: public static ISessionFactory CreateSessionFactory() { return Fluently.Configure() .Database(MsSqlConfiguration.MsSql2008 .ConnectionString(ConfigurationManager.ConnectionStrings[ConfigurationManager.AppSettings[“activeConnStr”]].ConnectionString)) .Mappings(m => m.FluentMappings.AddFromAssemblyOf() .Conventions.Add(DefaultCascade.All()) ) .BuildSessionFactory(); } 父类是: public class Person { public Person() { PhoneNumbers = new List(); […]

使用流畅的NHibernate AutoMapping保存级联 – 旧答案仍然有效吗?

我想要完全解决这个问题: Cascade使用流畅的NHibernate AutoMapping保存 使用Fluent Nhibernate映射使用一次调用为所有类和关系类型全局打开“级联”,而不是单独为每个映射设置它。 对早期问题的回答看起来很棒,但我担心Fluent Nhibernate API去年改变了它的.WithConvention语法并且打破了答案……或者我错过了什么。 我一直得到一堆名称空间未找到与IOneToOnePart,IManyToOnePart及其所有变体有关的错误: “无法找到类型或命名空间名称’IOneToOnePart’(您是否缺少using指令或程序集引用?)” 我已经尝试了官方示例dll,RTM dll和最新版本,但它们似乎都没有让VS 2008看到所需的命名空间。 第二个问题是我想将这个类与我的AutoPersistenceModel一起使用,但我不知道这一行在哪里:.ConventionDiscovery.AddFromAssemblyOf()在我的工厂创建方法中。 private static ISessionFactory CreateSessionFactory() { return Fluently.Configure() .Database(SQLiteConfiguration.Standard.UsingFile(DbFile)) .Mappings(m => m.AutoMappings .Add(AutoMap.AssemblyOf(type => type.Namespace.EndsWith(“Entities”)) .Override(map => { map.HasManyToMany(x => x.Products).Cascade.All(); }) ) )//emd mappings .ExposeConfiguration(BuildSchema) .BuildSessionFactory();//finalizes the whole thing to send back. } 下面是我正在尝试的类和使用语句 using System; using System.Collections.Generic; using System.Linq; using […]

无状态NHibernate会话的插入很慢

我正在努力改进NHibernate Insert性能已经有几天了。 我在许多post(例如这篇文章)中读到无状态会话可以插入每秒1000~2000条记录….但是它可以插入1243条记录的最佳时间对我来说超过9秒: var sessionFactory = new NHibernateConfiguration().CreateSessionFactory(); using (IStatelessSession statelessSession = sessionFactory.OpenStatelessSession()) { statelessSession.SetBatchSize(adjustmentValues.Count); foreach (var adj in adjustmentValues) statelessSession.Insert(adj); } class级 : public partial class AdjustmentValue : PersistentObject, IFinancialValue { public virtual double Amount { get; set; } public virtual bool HasManualValue { get; set; } public virtual bool HasScaleValue { get; set; […]

流畅的NHibernate – ProjectionList – ICriteria返回空值

我是NHibernate的新手,但我已经google了一下,并没有找到任何帮助解决这个问题。 我希望你们能! ;)我正在更改属性和方法的名称,因为此代码是公司的属性,但基本上这是我需要一些帮助。 我有以下情况: 我的域名实体: public class Structure { public virtual int Id { get; set; } public virtual string Name { get; set; } public virtual Person Manager { get; set; } //I need to fill here. //and others } 我的地图类: public class MapStructure : ClassMap { public MapStructure() { Table(“TB_Structure”); Id(x => x.Id).Column(“Id”).GeneratedBy.Identity(); […]

如何构建可扩展的数据模型

我正在考虑使用NHibernate和Fluent NHibernate构建一个具有可扩展数据模型的电子商务应用程序。 通过拥有可扩展的数据模型,我可以定义一个Product实体,并允许应用程序中的用户使用包含自定义数据类型的不同数据类型的新字段/属性来扩展它。 示例:产品可以有一个附加字段,如:Size – int Color – string Price – ColoredImage的十进制集合 – 名称,图像(例如“Red”,red.jpg(二进制文件)) 另一个要求是能够通过这些附加/扩展字段过滤产品。 我该如何实现呢? 提前致谢。

流利的nHibernate:一对多的关系问题

我有一对多关系的问题。 我有以下域类: public class Installation : Entity { public virtual string Name { get; set; } public virtual IList Institutions { get; set; } public Installation() { Institutions = new List(); } } public class Institution : Entity { public virtual string Name { get; set; } public virtual string Address { get; set; } […]

如何在Fluent NHibernate中映射IDictionary

我有一个带有IDictionary的课程。 正如您所看到的,它使用多对多来使用tOwnedCodedExample表从其表中获取CodedExamples,以查找OwnerClass拥有的内容。 我意识到这是一个非常基本的(并且希望是标准的)映射,但我正在努力,无法找到任何文档,因此非常感谢任何可能的帮助。 非常感谢 斯图

优化nhibernate会话工厂,webApp的启动时间确实很慢

我已经实施了测试应用。 它使用流畅的nhibernate映射到mssql db中的db对象。 因为我想学习微调nhib。 mvc3应用程序,我正在使用这个应用程序。 用于测试目的,它只有一个带有10个枚举属性和一个字符串属性的简单实体。 所以,它实际上是光波,但根据nhibernate profiler的启动时间是4.37秒。 这对于渲染一个具有少量行检查/未检查属性的实体来说真的很慢。 代码如下。 Domain.SessionProvider.cs public static ISessionFactory CreateSessionFactory() { var config = Fluently.Configure() .Database(MsSqlConfiguration.MsSql2008 .ConnectionString(c => c.FromConnectionStringWithKey(“myConnection”))) .Mappings(m => m.FluentMappings.Add()) .ExposeConfiguration(p => p.SetProperty(“current_session_context_class”, “web”)) .BuildConfiguration(); return config.BuildSessionFactory(); } Global.asax中 public class MvcApplication : System.Web.HttpApplication { //SessionPerWebRequest is ommited here as well as other content public static ISessionFactory SessionFactory […]

NHibernate.Spatial和Sql 2008地理类型 – 如何配置

我试图使用Nhibernate与Sql 2008地理类型,并有困难。 我正在使用Fluent Nhibernate来配置我相当新的,所以这也可能是问题。 首先,我试图坚持的课程看起来像: public class LocationLog : FluentNHibernate.Data.Entity { public virtual new int Id {get;set;} public virtual DateTime TimeStamp {get;set;} public virtual GisSharpBlog.NetTopologySuite.Geometries.Point Location {get;set;} } 映射类如下所示: public class LocationLogMap : ClassMap { ImportType(); Id(x => x.Id); Map(x => x.TimeStamp).Generated.Insert(); Map(x => x.Location); } 为了将MsSql2008GeographyDialect与Fluent Nhibernate一起使用,我创建了自己的配置类: public class Sql2008Configuration : PersistenceConfiguration { public […]