问题标签 [fluent-nhibernate-mapping]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
nhibernate - Fluent nHIbernate - 同一张表中的 HasMany 关系
我正在为网站顶部菜单结构创建模型 -
我有一个 MenuObject 模型:
和一个映射:
基本上我希望能够创建一个“顶级”菜单项,然后向其中添加一些子项 - 在数据库术语中,应该有一个 ParentId 字段,其中包含父菜单项的 ID(如果有的话 - 这可能是 null )
我正在努力弄清楚应该如何在我的对象模型中定义它。另外,一旦我配置了这个,我将如何拯救孩子?会不会是这样的
还是我必须独立保存孩子并将其明确链接到父母?
编辑* ** * *
谢谢 - 所以现在我的模型中有以下内容:
这在映射中:
我现在可以通过以下方式将子项添加到父项:
我想我赢了!这是最好的方法吗?谢谢gdoron
nhibernate - 将两个 Int 映射到 DateTime
直升机,
我试图创建一个将存储在数据库中的两个“int”映射到日期时间的 UserType。我的“int”在数据库中调用了时间和日期,这样我就想得到想要的效果。但我收到错误:指定的演员表无效。
我的代码:
asp.net-mvc-3 - 如何使用 Fluent Hibernate 从 T4 模板生成 LINQ2SQL 类
我之前问过一个类似的问题, 但没有得到回答,我试图了解如何使用 T4 模板生成 LINQ2SQL 类。我正在使用(或尝试使用)清晰的架构。只是找不到起点。
我做了什么:我浏览了许多教程博客,这些博客描述了使用 T4 模板生成代码,但找不到如何从数据库中生成实体类或 linq2sql 类的方法,就像它在实体框架中所做的那样。我是否必须手写映射,然后将使用数据库生成类,或者如果我的问题看起来含糊不清或措辞不当怎么办,对不起,但这就是我目前拥有的 T4 和 Fluent Hibernate 的全部内容。
我将不胜感激任何指导/帮助...
nhibernate - Fluent NHibernate 将 XDocument 属性映射到 Oracle XMLType
我正在寻找从 XDocument 属性类型映射到 Oracle XMLType 的最佳方式?我正在映射到旧数据库并且无法控制架构。它是甲骨文 9i。
我已经读过 nHibernate 的第 3 版为这种类型的映射提供了开箱即用的功能。我正在使用具有流畅映射的 3.1 版,并且在创建时使用默认映射时收到以下错误:
System.ArgumentOutOfRangeException :指定的参数超出了有效值的范围。在 Oracle.DataAccess.Client.OracleParameter.set_DbType(DbType 值) 在 NHibernate.Driver.DriverBase.SetCommandParameters(IDbCommand cmd, SqlType[] sqlTypes) 在 d:\CSharp\NH\NH\nhibernate\src\NHibernate\Driver\DriverBase .cs: NHibernate.Driver.DriverBase.GenerateCommand(CommandType type, SqlString sqlString, SqlType[] parameterTypes) 在 d:\CSharp\NH\NH\nhibernate\src\NHibernate\Driver\DriverBase.cs 的第 180 行:第 136 行NHibernate.AdoNet.AbstractBatcher.Generate(CommandType type, SqlString sqlString, SqlType[] parameterTypes) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\AdoNet\AbstractBatcher.cs:NHibernate.AdoNet.AbstractBatcher 的第 78 行。 PrepareBatchCommand(CommandType type, SqlString sql, SqlType[] parameterTypes) in d:
我解决了这个问题,我编写了我自己的用户类型,它在 XDocument 和字符串之间转换:
这工作正常,直到字符串长度大于 4000 个字符。现在我得到错误:
NHibernate.Exceptions.GenericADOException:无法插入:[XmlBlob#95586][SQL: INSERT INTO XMLBLOB (CAT_CODE, BLB_BLOB, BLB_ID) VALUES (?, ?, ?)] ----> Oracle.DataAccess.Client.OracleException: ORA-01461: 只能绑定 LONG 值以插入 LONG 列
c# - Using fluent NHibernate to map a read only sql view
I am trying to get Fluent Nhibernate to Automap read-only views that do not have a primary or composite key specified. It seems like it is possible as the API document for ClassMap exposes a default constructor for Id().
http://fluentnhibernate.org/api/FluentNHibernate.Mapping/ClassMap%601.htm
it says
IdentityPart Id() Create an Id that doesn't have a corresponding property in the domain object, or a column in the database. This is mainly for use with read-only access and/or views. Defaults to an int identity with an "increment" generator.
I have tried to override the mapping for the entity which corresponds to my view, and have removed the primary key convention that specifies the Id field name. It adds an id
column to queries on the view which fail because there is no such column.
I am trying to get rid of fake primary keys on my views as I think there should be a better way to do this.
Here is the override snippet I am using
Why doesn't this work?
nhibernate - 使用 HasMany 保存对象时,NHibernate 异常“对象引用了未保存的瞬态实例 - 在刷新之前保存瞬态实例”
我正在尝试保存具有多个 HasMany 关系的对象,但出现异常:“对象引用了未保存的瞬态实例 - 在刷新之前保存瞬态实例”。
下面是我的简化类、它们对应的映射和我的“应用程序”代码。
“应用程序代码”部分显示了我想要做的事情:将费用报告和工作时间添加到发票,然后保存发票。
但是,异常发生在 GetTimeWorked() 中。如果我颠倒顺序(在费用报告之前添加工作时间),则错误发生在 GetExpenseReports() 中。
如果我在添加费用报告后保存发票,然后在添加工作时间后再次保存,它工作正常。但是,这种保存需要是事务性的:费用报告和工作时间必须一起保存。
我已经阅读了很多有关此异常的信息,但我尝试的任何方法都不起作用。我读到的情况似乎与此略有不同。我猜这是一个映射问题,我尝试了一些替代映射(在 HasMany 方面,使用 Cascade),但我不知所措。
知道这里发生了什么以及如何解决它吗?
谢谢!
c# - Fluent Nhibernate & SQLite 映射组件
我在一个可能为空的实体上有一个组件。这适用于 InMemory 数据库的单元测试,但不适用于基于文件的 SQLite 数据库。我使用布尔标志来指示组件是否已设置,但这似乎是一个 hack。
这是 NHibernate 还是 SQLite 错误?还是我错过了什么?
这是我的映射被剥夺了商业价值:
对于内存数据库,当实体的所有列都为空时,实体上的组件为空。这是我所期望的。使用基于文件的数据库时,组件为空。所以我不能entity.Component==null
用来检查组件是否已经设置。
fluent-nhibernate - Fluent Nhibernate 多对多映射方式
我有两个类 Order 和 Items
我想要这样的方法
是写来创建这样的方法还是应该创建一个属性
我应该怎么做这个映射是休眠的?
c# - 没有主键和外键的流畅 NHibernate 3 表关系
背景资料
我有以下要使用 NHibernate 映射的类:
在数据库方面,我有以下表格:
玩家的屏幕名称可以是电子邮件地址 ("foo@bar.com")、Twitter 屏幕名称 ("@FooBar")、Skype 屏幕名称 ("foo.bar") 或其他类似名称。使用 Fluent NHibernate 映射 Player 的前三个属性非常简单:
但是 Unsubscribed 属性更难,因为我必须从两个无法更改且必须以只读方式访问的旧表中获取该信息(不允许插入、更新或删除):
只有电子邮件玩家可以取消订阅,所以其他类型的玩家在 EmailAddress 和 Unsubscribed 表中都不会有一行。
这些是遗留表的类:
以下是他们的 Fluent 映射:
问题
我遇到的问题是尝试获取电子邮件播放器的未订阅信息。
我可以将 Unsubscribed 表与 Player 表关联的唯一方法是通过中间 EmailAddress 表,将 EmailAddress.EmailAddress 与 Player.AddressIdentifier 匹配,但我在尝试弄清楚如何使用 Fluent NHibernate 执行此操作时遇到了麻烦。
我查看了多个表的 Join ,但我发现的所有示例都只处理 2 个表,而不是三个:
c# - 从 Func 转换成员访问 func功能
我正在尝试使用流利的 nhibernate 创建动态基础映射。
我正在做的是通过 BaseMap< T > 签入: ClassMap< T > if 例如: (typeof(ICategorizedEntity).IsAssignableFrom(typeof(T)))
如果是这样,我想映射一个名为“Category”的属性,它属于 ICategorizedEntity 的接口,但 Map(Func) 函数只接受 T 的属性,所以我试着用 linq 猜测一下,然后想出了这个:
这不起作用,因为在“地图”功能的深处,它会检查以下内容:
我得到“不是成员访问\r\n参数名称:表达式”。
如何创建和投射 MemberExpression 或任何类似的东西?