Tag: nhibernate mapping

实体 – >界面关系,如何映射

我正在尝试开发一些基本的网络应用程序。 我将仅用两个实体Article和Image发布问题。 一篇文章有​​很多图像,一个或多个图像只属于一篇文章。 每篇文章都实现了接口IArticle和抽象类ArticleBase。 ArticleBase仅定义每篇文章的公共属性,但子文章除了ArticleBase中定义的属性外,可以具有更多属性。 所以我有( IArticle , ArticleBase , IArticle , ArticleBase ) public abstract class ArticleBase : Entity, IArticle { … public string Name { get; set; } public DateTime Created { get; set; } } public class ArticleComputer : ArticleBase { public virtual IList Images {get; set;} public virtual OSTypeEnum OS {get; […]

在使用动态更新或插入时,如何使NHibernate认为属性总是变脏?

我正在寻找有关NHibernate问题的帮助,这一直困扰着我一段时间。 长话短说: 我正在寻找一种方法,在第一级缓存中,每次执行更新或插入时“重置”实体上的属性。 我想要实现的是,当使用动态更新或插入时,NHibernate将始终认为有问题的属性是脏的。 这个背景故事是我知道,如果事务成功,我想要“重置”的列将通过触发器在数据库中设置为Null。 另一方面,第一级缓存不知道这一点,因此当我将其设置为与之前更新/插入时相同的值时,NHibernate会认为该属性未更新。 问题是我的触发器依赖于设置的值。 由此产生的混乱是,如果我想使用动态更新或插入我只能更新/插入实体一次而不“事后”刷新它(我真的不想这样做)。 提示或帮助将非常感激,因为我真的在这里碰壁

使用Fluent NHibernate映射大字符串

我正在使用Oracle DB,我正在尝试映射这个类: public class Book { public virtual int Id { get; private set; } public virtual string Author { get; set; } public virtual string Title { get; set; } public virtual string Text { get; set; } } 使用此映射类: public class BookMap : ClassMap { public BookMap() { Id(x => x.Id); Map(x => […]

Nhibernate:以相同的精度和比例映射所有小数

我理解在NHibernate中,使用代码映射,我可以指定十进制属性的精度和比例,如下所示: Property( x => x.Dollars, m => { m.Precision(9); m.Scale(6); } ); 这很好,但我想知道是否有一种方法可以轻松地以简单的方式映射所有类中的所有小数属性。 我必须仔细检查所有映射并手动更新每个映射,这似乎有点疯狂。 有谁知道如何实现这一目标?

如何使NHibernate忽略POCO中的属性

我们有POCO,类似于: public class Person { public Guid PersonID { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public DateTime DateOfBirth { get; set; } public string Version {get; set; } } 和相应的hbm文件一样 仔细观察,我们有一个Version属性,数据库中没有列? 我们只是希望nHibernate忽略这个属性,这就是我们没有将属性放在映射文件中的原因。 但相反,它开始抛出错误。 有没有解决的办法 ?

NHibernate:在连接表上映射连接

我有一个视图将3个表连接在一起,我需要用NHibernate映射替换,而不需要对数据库进行任何更改。 这可能吗? 这是我的观点的简化示例: SELECT tblTable1.*,tblTable2.*,tblTable3.MyProperty FROM tblTable1 OUTER JOIN tblTable2 ON tblTable1.Table1Key = tblTable2.Table1Key OUTER JOIN tblTable3 ON tblTable2.Table2Key = tblTable3.Table2Key 基本上我们选择tblTable1并加入tblTable2这对我来说在NHibernate中起作用。 我的问题是tblTable3。 如何在联接表tblTable2的属性上加入它? 当我像这样进行映射时,由于某种原因,我得到一个试图在Table1Key上加入tblTable3的查询。

如何使用NHibernate Mapping.ByCode在非主键字段上加入表?

我有一张员工表: Employee { Name EmployeeId -pk PositionId -fk } positionId映射到位置表: Position { PositionId -pk ReportsToId PositionName PositionDescription } ReportsToId字段是该职位经理的职位ID。 我想选择一名员工,他们的职位和经理的详细信息。 如何使用NHibernate的Mapping.ByCode完成这项工作。 ReportsToId字段不是关键字段。 从我在网上看到的,这似乎影响了映射……

在nhibernate中的Linq-ing计算属性无法解析属性Error

我一直试图通过遵循Hendry Luk的计算属性解决方案在我的持久层中创建一个计算属性 。 我可以使用linq查询从数据库中选择值: var result = from parcel in Repository.Query(); 当我尝试在所选结果上执行某个位置时,我得到一个无法解决属性错误。 这是我的代码的样子。 我的型号: namespace ConsoleApplication14 { using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Text; public class Common1 : ICommon { public virtual int Id { get; set; } public virtual string Name { get; set; } //public static readonly Expression<Func> CalculatedDisplayExpression = […]

使用NHibernate映射通用类

我正在尝试执行以下操作,但它抱怨“未找到’extends’引用的类”。 我想我需要为每个具体类型的Component都有一个映射,但我不能指定Attributes.Class两次.. 代码如下: [NHibernate.Mapping.Attributes.Class(Table = “Components”, Abstract = true, NameType = typeof (Component))] public abstract class Component : IComponent where T : ContentItem { … } [NHibernate.Mapping.Attributes.JoinedSubclass(Table = “ComponentA”, ExtendsType = typeof(Component))] public class ComponentA : Component { … } [NHibernate.Mapping.Attributes.JoinedSubclass(Table = “ComponentB”, ExtendsType = typeof(Component))] public class ComponentB : Component { … } 其中ItemA和ItemB从ContentIteminheritance并全部映射。

NHibernate将类属性映射到Rows而不是Columns

是否可以映射一个类,其中每个属性都存储为表中的行,而不是列。 该场景是我们将全局选项持久保存到数据库的位置。 我们将选项存储在“选项”类中,该类具有每个选项的属性,即“展开菜单”,“退出时保存”等。 我们只希望将每个类属性存储为一个由Enum标识的新行,而不是将每个选项存储在自己的表列中。 这可能吗? (C#Winforms)