问题标签 [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 - 仅当关联表具有空记录时,此 SqlParameterCollection 的索引 N 无效,Count=N
我有一个相当复杂的实体,当特定的数据库表缺少记录时,它不会保存。当记录存在时,实体会正确保存。当记录没有我收到异常时:
此 SqlParameterCollection 的索引 N 无效,Count=N
在阅读了通过 Google 找到的一堆解决方案以及 Stack Overflow 上最密切相关的问题之后:
- 当数据库中的列为 Null 时,是什么导致“Count=nn 的此 SqlParameterCollection 的索引 nn 无效”?
- 此 SqlParameterCollection 的索引 n 无效,Count=n”或“外键不能为空
我相信我的问题与我设置映射文件的方式有关。Customer 实体引用了 Person 实体。Person 映射到我们已经读取但没有写入权限的表。当 Person 实体的记录不存在时,我会生成异常。如果记录存在没有问题。我已将 Person 从 customer 的引用设置为Nullable()
. 我还仔细检查了以确保我没有从任一实体映射两次的属性。
以下是我觉得相关的映射信息,但可以根据需要提供更多:
顾客
人
更复杂的是,我们有一些痛苦的代码来让 NHibernate 在 Person 不存在时表现得更好。我不确定它是否适用于此,但认为它足够相关,可以包含在我的问题中。我们使用下面的代码,因为没有它,NHibernate JIRA 将创建大量查询。此Stack Overflow 答案中概述了此解决方案。
客户的个人财产
我的映射中缺少什么会导致此异常?我没有看到这个问题的另一个部分吗?
nhibernate - 尝试检索存储为 AnsiString 的枚举属性时出现“PropertyAccessException: Invalid Cast”
我需要将我的枚举作为 varchar 而不是 nvarchar 存储在数据库中,所以我使用“AnsiString”映射如下:
保存到数据库可以正常工作,但是在检索时我收到一个错误: NHibernate.PropertyAccessException: Invalid Cast (检查你的映射是否有属性类型不匹配); Core.Document 的设置器
当我从映射中删除CustomType("AnsiString")时,它工作正常。
有什么建议么?
这是hbm:
fluent-nhibernate - NHibernate 异常:无法初始化集合,列名无效。流畅的映射。也许是多对一的问题?
我对通过 NHibernate 得到的异常感到困惑和沮丧。对于这篇文章的篇幅,我深表歉意,但我已尝试包含适当的详细信息以充分解释该问题以获得一些帮助!
以下是事实:
- 我有一个
Person
包含属性的类BillingManager
,它也是一种Person
类型。我将其映射为 FNH“参考”。 - 我有一个
ExpenseReport
包含属性的类SubmittedBy
,它是一种Person
类型。我将其映射为 FNH“参考”。 - 我有一个
BillableTime
包含属性的类Person
,它是一种Person
类型。我将其映射为 FNH“参考”。 Person
包含ExpenseReport
类型 (propertyExpenseReports
) 的集合 (IList)Person
包含BilledTime
类型 (propertyTime
) 的集合 (IList)
(请参阅帖子底部的类和映射。)
一切都很酷,直到我将IList<BilledTime> Time
集合添加到Person
. 现在,当我尝试访问时_person.Time
,出现异常:
编码:
例外:
确实是无效的列名,它在表BillingManager_id
中不存在。BillableTime
但是,我不明白为什么 NHB 创建了这个 SQL……对我来说没有意义。在搜索解决方案时,我经常看到这个“无效的列名”异常,但似乎没有任何效果。更令人困惑的是:就像BilledTime
,该ExpenseReport
类型还包含对的引用Person
并且它工作得很好。
我能够弄清楚的一件事是,如果我从 Person 映射References(p => p.BillingManager)
(现在似乎存在一些“自我引用”问题,因为该Person.BillingManager
属性本身就是对 a 的引用Person
。
知道这里发生了什么吗?我很茫然...
谢谢。
=== 类和映射 ===
nhibernate - 每个类加载 NHibernate 表 - 类型错误
我在 Fluent/NHibernate 中的每类表层次结构存在映射问题。从数据库中检索记录时,我不断收到错误消息(错误类型异常)
具有 id 的对象:2445763 不属于指定的子类:ClassA(加载对象属于错误的类 [ClassB])(记录 2445763 在类型列中确实具有值“2”)
在我的域中,我有 EntryBase、ClassA 和 ClassB。类定义为
映射是:
知道可能有什么问题吗?我已经能够正确存储 B 类的记录,但是当我检索它们时,它正试图将它们加载为 A 类。这是映射问题吗?
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.QueryOver
1.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
请给我提意见
nhibernate - 复合键和继承
我有以下类和映射
插入、更新和 session.Get() 工作正常,但查询如
投掷
似乎 NH 试图将抽象基类实例化为复合键并失败。我能以某种方式解决这个问题吗?
更新:我的测试代码
nhibernate - Fluent NHibernate:约定/KeyColumn
在代码下方,一个客户可以有多个地址。存在一对多的关系。我想在地址表中作为 FK 一个名为“Customer”而不是“Customer_id”的字段
我试图添加:
.KeyColumn("Customer")
> 没有变化
我尝试用ForeignKeyConvention 来改变没有改变。
任何想法 ?
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。我假设我缺少的语法发生了变化。任何和所有的帮助将不胜感激。
谢谢!约翰
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”呢?
c# - 此 SqlParameterCollection 的索引 1 无效,Count=1
我注意到的是,在 Ncv 中,我引用的 Report 字段没有生成。以下是我收到的错误。
这是我的域的样子,我收到的错误是 Invalid index 1 for this SqlParameterCollection with Count=1。