Tag: nhibernate

Fluent Nhibernate – 映射列表会导致NullReferenceException?

我有以下类和流畅的映射: public class A { public virtual int Id { get; private set; } public virtual string MyString { get; set; } public virtual IList MyChildren { get; set; } } public class B { public virtual int Id { get; private set; } public virtual DateTime TheDate { get; set; } } public sealed […]

NHibernate只有存储过程

我想让NHibernate在调用ISession.Get时通过其键而不是使用动态SQL来获取实体时调用存储过程。 我们一直在使用NHibernate并允许它为查询和插入/更新/删除生成SQL,但现在可能必须将我们的应用程序部署到需要我们使用存储过程进行所有数据库访问的环境中。 我们可以在.hbm.xml映射文件中使用sql-insert,sql-update和sql-delete进行插入/更新/删除。 我们的hql和条件查询必须用存储过程调用替换。 但是,我还没有想出如何强制NHibernate使用自定义存储过程来获取按键的实体。 我仍然希望能够调用ISession.Get,如: using (ISession session = MySessionFactory.OpenSession()) { return session.Get(customerId); } 还有延迟加载对象,但我希望NHibernate调用我的“GetCustomerById”存储过程而不是生成动态SQL。 可以这样做吗? 考虑到我们必须支持的新环境,NHibernate可能不再合适。

Orchard Custom Module – 由NHibernate选择的模型 – 需要虚拟属性

我正在努力在Orchard CMS中构建自定义模块,我有以下控制器操作: public ActionResult Inventory() { var models = _repository.Get(); return View(new MyViewModel() { MyModels = models.ToList() }); } 现在,当Orchard构建它时,会发生exception,因为NHibernate已经选择了MyModel,因为它被视为PartRecord,我不希望它。 方法get_Id应该是’public / protected virtual’或’protected internal virtual’。 我可以在属性中添加虚拟,但我想避免NHibernate在查看此对象时有任何部分,这是不必要的。 我的问题是,如何添加模型,在视图中访问该模型并禁止Orchard将其视为PartRecord? 实际上,我将该模型用于与Orchard DB分开的独立存储库中。 编辑:附加信息 _repository是一个IDbRepository,指向我自己的数据库实例MyModel是我的数据的POCO。 我正在尝试避免将虚拟放在MyModel中的属性上,我将它们放在这里,以说明我试图避免它们的位置。 public interface IDbRepository : IDependency { T Find(long id) where T : class, IActiveRecord; bool Update(T record) where T : class, IActiveRecord; […]

使用Castle Windsor为单个界面注册多个组件

我试图通过使用下面的代码注册多个NHibernate ISessions(多个数据库)。 我收到“有一个组件已经注册了给定的键Castle.MicroKernel.Registration.GenericFactory`1 [[NHibernate.ISession,NHibernate,Version = 2.1.0.4000,Culture = neutral,PublicKeyToken = aa95f207798dfdb4]]”作为错误尝试构建容器时的消息。 container.Kernel.Register( Component.For().LifeStyle.Transient .UsingFactoryMethod(() => sessionFactoryOne.OpenSession() ).Named(“ISession+sessionOne”)); container.Kernel.Register( Component.For().LifeStyle.Transient .UsingFactoryMethod(() => sessionFactoryTwo.OpenSession()) .Named(“ISession+sessionTwo”));

我应该在我的class级中使用哪个NHibernate.Mapping.Attribute来映射字典?

我正在使用NHibernate,我直接用属性映射我的对象。 我见过类似的问题,但大多数情况下人们使用映射文件…或者他们给出了不再存在的链接的答案:)对于下面的类,我必须为属性表添加哪些属性表是一个IDictionary? 我猜它有点像[Map]但有哪些属性和/或元素? 我在哪里可以找到一些文件? [Class(Table = “SpecificitySets”, Name = “ZslSpecificityTable”)] public class SpecificityTable { [Id(0, TypeType = typeof(ulong), Name = “Id”)] [Generator(1, Class = “native”)] public uint Id [Map(Name = “specificityMapping”, Table = “SpecificityMapping”)] // and then ?? public virtual IDictionary Table { get; private set; } // … }

NHibernate:如何将多个父母的普通类型的孩子映射到一个表中?

有没有办法让NHibernate让我在ChildObjectTable中存储多个ChildObjects,但是将它们引回到不同的ParentObjects? 或者我是否必须为每个ParentObject类型创建单独的ChildObject类/表? 我把它归结为以下内容,我正在尝试映射这些对象: public class ParentObjectA { public virtual Int64 Id { get; private set; } public virtual IDictionary Children { get; private set; } } public class ParentObjectB { public virtual Int64 Id { get; private set; } public virtual IDictionary Children { get; private set; } } public class ChildObject { public virtual […]

Nhibernate将id = 0存储为null

我对nHibernate有一个小问题(流利)我有两个对象,一个包含另一个 – 父和子(预定义对象,只读)。 映射: public class ParentClass { public virtual int Id { get; set; } public virtual ChildClass Metoda { get; set; } } public ParentClassMap() { Table(“Wyceny”); Id(x => x.Id).Column(“Id”).GeneratedBy.TriggerIdentity(); References(x => x.Metoda).Column(“RMW_ID”); } public ChildClass { public virtual int Id { get; set; } public virtual string Nazwa { get; set; } […]

NHibernate Filtered Child Collection Lazy Loaded,即使指定了eager fetch也是如此

我试图找出为什么没有过滤返回子集合,即使急切加载集合和生成的SQL是正确的。 这些课程的流利映射是: public class OptionIdentifierMap : ClassMap { public OptionIdentifierMap() : base(“OptionIdentifier”) { //Id Mapping Removed HasMany(x => x.OptionPrices) .KeyColumn(“OptionIdentifier_id”) .Cascade.None(); } } public class OptionPriceMap : ClassMap { public OptionPriceMap() : base(“OptionPrice”) { //Id Mapping removed References(x => x.Option) .Column(“OptionIdentifier_id”) .Cascade.None() .ForeignKey(“FK_OptionPrice_OptionIdentifier_id_OptionIdentifier_Id”) .Not.Nullable(); References(x => x.Increment) .Column(“PricingIncrement_id”) .Cascade.None() .ForeignKey(“FK_OptionPrice_PricingIncrement_id_PricingIncrement_Id”) .Not.Nullable(); Map(x => x.Price).Not.Nullable(); } […]

映射到枚举列表?

我需要使用NHibernate将具有Enums列表的类映射到db表 这是对象 public class Driver : IIdentity { private IList licences; /// /// The drivers licences /// public virtual IList Licences { get { return this.licences; } set { this.licences = value; } } ….. rest of the class …. } //the enum public enum Licence { FivePersonCar = 5, SixPersonCar = 6 } —————-这里是DB表 […]

Nhibernate映射内部类和InternalsVisibleTo

我的代理生成器无法为内部映射的Nhibernate类生成代理。 我尝试在assemblyinfo.cs中使用InternalsVisibleTo将它们添加为可见但它似乎不起作用。 更糟糕的是,我不知道如何判断我是否已成功设法成为我想要的代理程序集的朋友,因为如果我在assemblyinfo.cs中的代理程序集公钥中更改了一些数字,则不会抛出任何错误。 错误: 测试方法TestProject1.UnitTest1.TestMethod1抛出exception:NHibernate.HibernateException:创建代理实例失败—> Castle.DynamicProxy.Generators.GeneratorException:Type不公开,因此无法生成代理。 键入:BaseSystemCore.Domain.Lot 堆栈跟踪: Castle.DynamicProxy.DefaultProxyBuilder.AssertValidType(Type target)Castle.DynamicProxy.DefaultProxyBuilder.CreateClassProxy(Type classToProxy,Type [] additionalInterfacesToProxy,ProxyGenerationOptions options)Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(Type classToProxy,Type [] additionalInterfacesToProxy,ProxyGenerationOptions options,Object [] constructorArguments,IInterceptor []拦截器)NHibernate.ByteCode.Castle.ProxyFactory.GetProxy(Object id,ISessionImplementor session)NHibernateUtilities.BaseUnitOfWork.handleException(例外e)在C:\ Users \ Isaac.G \ Desktop \ svn.bolinger中。 ca \ Library Projects \ NHibernateUtilities \ NHibernateUtilities \ BaseUnitOfWork.cs:第871行NHibernateUtilities.BaseUnitOfWork.getAllT在C:\ Users \ Isaac.G \ Desktop \ svn.bolinger.ca \ Library Projects \ NHibernateUtilities \ NHibernateUtilities \ […]