问题标签 [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.

0 投票
2 回答
2238 浏览

nhibernate - 仅当关联表具有空记录时,此 SqlParameterCollection 的索引 N 无效,Count=N

我有一个相当复杂的实体,当特定的数据库表缺少记录时,它不会保存。当记录存在时,实体会正确保存。当记录没有我收到异常时:

此 SqlParameterCollection 的索引 N 无效,Count=N

在阅读了通过 Google 找到的一堆解决方案以及 Stack Overflow 上最密切相关的问题之后:

我相信我的问题与我设置映射文件的方式有关。Customer 实体引用了 Person 实体。Person 映射到我们已经读取但没有写入权限的表。当 Person 实体的记录不存在时,我会生成异常。如果记录存在没有问题。我已将 Person 从 customer 的引用设置为Nullable(). 我还仔细检查了以确保我没有从任一实体映射两次的属性。

以下是我觉得相关的映射信息,但可以根据需要提供更多:

顾客

更复杂的是,我们有一些痛苦的代码来让 NHibernate 在 Person 不存在时表现得更好。我不确定它是否适用于此,但认为它足够相关,可以包含在我的问题中。我们使用下面的代码,因为没有它,NHibernate JIRA 将创建大量查询。此Stack Overflow 答案中概述了此解决方案。

客户的个人财产

我的映射中缺少什么会导致此异常?我没有看到这个问题的另一个部分吗?

0 投票
2 回答
1743 浏览

nhibernate - 尝试检索存储为 AnsiString 的枚举属性时出现“PropertyAccessException: Invalid Cast”

我需要将我的枚举作为 varchar 而不是 nvarchar 存储在数据库中,所以我使用“AnsiString”映射如下:

保存到数据库可以正常工作,但是在检索时我收到一个错误: NHibernate.PropertyAccessException: Invalid Cast (检查你的映射是否有属性类型不匹配); Core.Document 的设置器

当我从映射中删除CustomType("AnsiString")时,它工作正常。

有什么建议么?

这是hbm:

0 投票
1 回答
3976 浏览

fluent-nhibernate - NHibernate 异常:无法初始化集合,列名无效。流畅的映射。也许是多对一的问题?

我对通过 NHibernate 得到的异常感到困惑和沮丧。对于这篇文章的篇幅,我深表歉意,但我已尝试包含适当的详细信息以充分解释该问题以获得一些帮助!

以下是事实:

  • 我有一个Person包含属性的类BillingManager,它也是一种Person类型。我将其映射为 FNH“参考”。
  • 我有一个ExpenseReport包含属性的类SubmittedBy,它是一种Person类型。我将其映射为 FNH“参考”。
  • 我有一个BillableTime包含属性的类Person,它是一种Person类型。我将其映射为 FNH“参考”。
  • Person包含ExpenseReport类型 (property ExpenseReports) 的集合 (IList)
  • Person包含BilledTime类型 (property Time) 的集合 (IList)

(请参阅帖子底部的类和映射。)

一切都很酷,直到我将IList<BilledTime> Time集合添加到Person. 现在,当我尝试访问时_person.Time,出现异常:

编码:

例外:

确实是无效的列名,它在表BillingManager_id中不存在。BillableTime但是,我不明白为什么 NHB 创建了这个 SQL……对我来说没有意义。在搜索解决方案时,我经常看到这个“无效的列名”异常,但似乎没有任何效果。更令人困惑的是:就像BilledTime,该ExpenseReport类型还包含对的引用Person并且它工作得很好。

我能够弄清楚的一件事是,如果我从 Person 映射References(p => p.BillingManager)(现在似乎存在一些“自我引用”问题,因为该Person.BillingManager属性本身就是对 a 的引用Person

知道这里发生了什么吗?我很茫然...

谢谢。

=== 类和映射 ===

0 投票
1 回答
1434 浏览

nhibernate - 每个类加载 NHibernate 表 - 类型错误

我在 Fluent/NHibernate 中的每类表层次结构存在映射问题。从数据库中检索记录时,我不断收到错误消息(错误类型异常)

具有 id 的对象:2445763 不属于指定的子类:ClassA(加载对象属于错误的类 [ClassB])(记录 2445763 在类型列中确实具有值“2”)

在我的域中,我有 EntryBase、ClassA 和 ClassB。类定义为

映射是:

知道可能有什么问题吗?我已经能够正确存储 B 类的记录,但是当我检索它们时,它正试图将它们加载为 A 类。这是映射问题吗?

0 投票
1 回答
598 浏览

nhibernate - 使用 queryover 加入 2 个表

我在样本中有 3 个表。我要加入 2 个表,但我有问题以下是我的代码:

我的错误:

NHibernate.Exceptions.GenericADOException: 无法执行查询 [ SELECT this_.ID as ID1_1_, this_.name as name1_1_, this_.lastname as lastname1_1_, tblterm1_.ID as ID2_0_, tblterm1_.LessonID as LessonID2_0_, tblterm1_.StudentID as StudentID2_0_ FROM TblStudent this_内部连接 ​​TblTerm tblterm1_ on this_.ID=tblterm1_.TblStudent_id ] [SQL: SELECT this_.ID as ID1_1_, this_.name as name1_1_, this_.lastname as lastname1_1_, tblterm1_.ID as ID2_0_, tblterm1_.LessonID as LessonID2_0_, tblterm1_.StudentID作为 StudentID2_0_ FROM TblStudent this_inner join TblTerm tblterm1_ on this_.ID=tblterm1_.TblStudent_id] ---> System.Data.SqlClient.SqlException:列名“TblStudent_id”无效。在 System.Data.SqlClient.SqlInternalConnection 的 System.Data.SqlClient.SqlConnection.OnError(SqlException 异常,布尔型 breakConnection)。1 querySpaces, IType[] resultTypes) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Loader\Loader.cs:line 1595 at NHibernate.Loader.Criteria.CriteriaLoader.List(ISessionImplementor session) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Loader\Criteria\CriteriaLoader.cs:line 74 at NHibernate.Impl.SessionImpl.List(CriteriaImpl criteria, IList results) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Impl\SessionImpl.cs:line 1919 at NHibernate.Impl.CriteriaImpl.List(IList results) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Impl\CriteriaImpl.cs:line 265 at NHibernate.Impl.CriteriaImpl.List[T]() in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Impl\CriteriaImpl.cs:line 276 at NHibernate.Impl.CriteriaImpl.Subcriteria.List[T]() in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Impl\CriteriaImpl.cs:line 813 at NHibernate.Criterion.QueryOver1.List() in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Criterion\QueryOver.cs:第 57 行在 NHibernate.Criterion.QueryOver`1.NHibernate.IQueryOver.List() in d:\CSharp \NH\NH\nhibernate\src\NHibernate\Criterion\QueryOver.cs:第 198 行位于 human.Form1.button_JoinSelect_Click(Object sender, EventArgs e) in E:\desktop\Human\human\human\Form1.cs:line 84

请给我提意见

0 投票
2 回答
1397 浏览

nhibernate - 复合键和继承

我有以下类和映射

插入、更新和 session.Get() 工作正常,但查询如

投掷

似乎 NH 试图将抽象基类实例化为复合键并失败。我能以某种方式解决这个问题吗?

更新:我的测试代码

0 投票
1 回答
318 浏览

nhibernate - Fluent NHibernate:约定/KeyColumn

在代码下方,一个客户可以有多个地址。存在一对多的关系。我想在地址表中作为 FK 一个名为“Customer”而不是“Customer_id”的字段

我试图添加: .KeyColumn("Customer")> 没有变化

我尝试用ForeignKeyConvention 来改变没有改变。

任何想法 ?

0 投票
1 回答
1087 浏览

nhibernate - 自定义 Fluent NHibernate 地图不适用于 AutoMapping

我遇到了 Fluent NHibernate AutoPersistenceModelGenerator 的问题。它不想拾取自定义地图。

使用 Sharp Architecture 2.0、Fluent NHibernate 1.2 和 NHibernate 3.1。

我目前的相关配置如下:

我尝试对配置进行各种修改,并在 Fluent NHibernate 上翻阅互联网文章,但无济于事。我有一个使用 Sharp Arch 1.x 的工作版本,以及早期版本的 NHibernate 和 Fluent。我假设我缺少的语法发生了变化。任何和所有的帮助将不胜感激。

谢谢!约翰

0 投票
1 回答
134 浏览

c# - 从 Fluently 映射的列名中检索属性名

背景

我有一个名为“Dog”的类,它引用了另一个名为“Tail”的类,它有一个名为“Size”的属性。所以,如果我想知道狗的尾巴大小,那就是“Dog.Tail.Size”。完美的。

我用 FluentNHibernate 映射了这个像这样:

问题

拥有列名“DG_TL_SIZE”,我怎样才能得到“Dog.Tail.Size”?我知道我可以,在我拥有 Dog.Tail.Size 之后,"persistentClass.GetRecursiveProperty("Dog.Tail.Size")"获取该属性并使用它。

问题是我需要更改它的值,因此我需要一个 PropertyInfo,但是当我有“Dog.Tail.Size”时,这应该不难获得。

那么,我怎样才能得到“Dog.Tail.Size”呢?

0 投票
1 回答
1417 浏览

c# - 此 SqlParameterCollection 的索引 1 无效,Count=1

我注意到的是,在 Ncv 中,我引用的 Report 字段没有生成。以下是我收到的错误。

这是我的域的样子,我收到的错误是 Invalid index 1 for this SqlParameterCollection with Count=1。