问题标签 [nhibernate-3]
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.
c# - 如何使用 Nhibernate 进行条件求和?
我正在尝试做与此 SQL 代码等效的操作
与休眠。
到目前为止我试过
但这给了我以下错误:
无法从 IIF 确定成员((Convert(c.myProperty) = 2), 1, 0)
你有什么主意吗 ?
编辑 1:我可以通过 2 个查询获得结果,但我只想在 1 个查询中执行此操作。
编辑 2:我在这里使用 QueryOver。
c# - NHibernate 应该总是写 NULL 而不是空字符串
我将 NHibernate 3 与 Microsoft SQL Server 数据库(2005 及更高版本)一起使用。现在,我正在寻找一种方法来告诉 NHibernate 始终将 NULL 写入数据库而不是空字符串。最好的方法是什么?- 或者 NHibernate 中是否有一个开关可以做到这一点?谢谢你的帮助。
c# - 告诉 NHibernate 执行一个插入语句
我将 NHibernate 与存储库模式一起使用。存储库具有方法 Insert() 和 Update()。现在,Insert() 调用 Session.Save(entity) 和 Update() 调用 Session.Merge(entity)。我的实体具有 PrimaryKey 的休闲映射:
id是我分配的。现在, Session.Save(entity) 首先执行 Select 以查看实体是新的还是已经存在的。但是在 Insert()-Case 中,实体总是新的。我现在正在寻找一种方法来告诉 NHibernate 始终执行插入 - 而不是首先选择然后插入。我已经看到,我可以使用 Version-Property 来做到这一点 - 但我无法更改 Database-Schema。
谢谢你的帮助。
tsql - linq to nhibernate 中的条件行计数不起作用
我想将以下简单的 sql 查询转换为 Linq to NHibernate:
我简化的 UserNews 类:
我写了以下 linq 查询:
但是生成的 sql 只是忽略了我的x => x.UserHits > 0
语句并进行了不必要的“左外连接”:
如何修复或解决此问题?也许这可以用 QueryOver 语法做得更好?
c# - 在 Nhibernate 中,除了外键列之外,我是否可以使用映射中的其他条件进一步限制一对多的内容?
我遇到了一种情况,表 A 对象需要将一些表 B 记录映射为一对多,但表 B 有很多记录链接到特定表 A 记录,我想进一步限制哪些记录进入一对多。这是一个遗留数据库结构,由于生产中的其他遗留程序,它不能轻易更改。
假设表 B 如下所示:
假设 TableBColumn1 记录可能包含以某种方式对表 B 记录进行分类的“N”4 个字符代码中的任何一个。
无论如何,假设我已经使用 TableAFKey 列将一对多映射。我还可以告诉映射我只想要 TableBColumn1 == "ABCD" 的那些记录吗?
任何使用代码映射的东西都是首选解决方案。如果它可以在旧的 xml 映射中完成,但不能通过代码映射,我也会将其作为解决方案。
谢谢!
nhibernate - 流畅的 NHibernate - IndexOutOfRange
我已经阅读了所有帖子并且知道 IndexOutOfRange 通常会发生,因为一个列被引用了两次。但是根据我的映射,我看不出这是如何发生的。在配置中使用 SHOW_SQL 为 true 时,我看到一个 Insert 到Events
表中,然后是一个IndexOutOfRangeException
引用RadioButtonQuestions
表的。我看不到它尝试使用的生成异常的 SQL。我尝试使用 AutoMapping,现在已将ClassMap
这两个类切换为完整,以尝试缩小问题范围。
生成的 SQL 看起来是正确的:
这是使用 NH 3.3.0.4000 和 FNH 1.3.0.727。当我尝试保存新事件(附加 RadioButtonQuestion)时,我看到
NHibernate:插入事件(EventDate,标题)值(@p0,@p1);@p0 = 5/21/2012 12:32:11 PM [类型:日期时间(0)],@p1 = '我的测试事件' [类型:字符串(0)] NHibernate:选择@@IDENTITY
Events.Tests.Events.Tasks.EventTasksTests.CanCreateEvent:NHibernate.PropertyValueException:为Events.Domain.RadioButtonQuestion._Events.Domain.Event.RadioButtonQuestionsIndexBackref ----> System.IndexOutOfRangeException:一个SqlCeParameter 与ParameterIndex'3'的属性值脱水不包含在此 SqlCeParameterCollection 中。
因此,如果一个列确实被引用了两次,那么导致该行为的我的 FNH 配置有什么问题?我正在尝试与排序建立双向关系(一个事件有许多单选按钮问题)(我会保持它,因为 NH 不会处于双向关系,从我读过的内容来看)。Event
FWIW我还通过删除from尝试将其作为单向关系RadioButtonQuestion
,但仍然导致相同的异常。
nhibernate - NHibernate QueryOver 和集合过滤
我的班级的简单例子:
用户检查几个感兴趣的标签以过滤帖子列表。
我需要按选定的标签过滤所有帖子,例如:
例外:NHibernate.QueryException: Cannot use collections with InExpression
实际上,如果它的标签之一包含在 InterestedTags 中,我应该显示帖子。
UPD
为我工作:
.net - 在 Linq to Nhibernate 中使用 QueryOver<> 获取大型数据时出现 OutOfMemory 异常
我有一个在 NHibernate 3.0 中使用 Linq to NHibernate 的 asp.net Web 应用程序。
在一个函数中,我需要从一个包含 20 列的 1000 万条记录的表中获取大约 20000 条记录。
我正在使用 Session.QueryOver<>() 方法来获取记录。
功能代码为:
此代码一直有效,直到表有 2 条 lac 记录。
但是在表中添加 10 条 lac 记录后,此方法会抛出错误:
NHibernate.Util.ADOExceptionReporter| 引发了“System.OutOfMemoryException”类型的异常。
NHibernate.Util.ADOExceptionReporter| 引发了“System.OutOfMemoryException”类型的异常。
NHibernate.Util.ADOExceptionReporter| 引发了“System.OutOfMemoryException”类型的异常。
PaymentCurrency 作为 Payment19_2_0_,this_.PaymentDate 作为 Payment20_2_0_,this_.TransactionId 作为 Transac21_2_0_,this_.BatchId 作为 BatchId2_0_ FROM TIOTestDB.dbo.BatchDetails this_WHERE this_.BatchId = ? ] 位置参数:#0>3 [SQL: SELECT this_.RefereId as Referenc1_2_0_, this_.AccNumber as AccountN2_2_0_, this_.AcStatus as AccountS3_2_0_, this_.AcType as AccountT4_2_0_, this_.AccSubType as AccountS5_2_0_, this_.AccountDescription as AccountD6_2_0_, this_. ActivationDate as Activati7_2_0_, this_.CombinedBilling as Combined8_2_0_, this_.PlanAmount as PlanAmount2_0_, this_.PlanCode as PlanCode2_0_, this_.CustomerName as Custome11_2_0_, this_.Email as Custome12_2_0_, this_.Phone as Custome13_2_0_, this_.Address as Custome14_2_0 Custome15_2_0_,this_.State 为 Custome16_2_0_,this_.ZipCode 为 Custome17_2_0_,this_。
当我在 foreach() 迭代中执行此函数时,虽然查询执行 1 或 2 次并检索数据,但之后它会引发 Out of memory 异常。
作为一名经验丰富的 NHibernate 开发人员,我可以理解我需要重组 LINQ 查询以优化其性能。
我也在互联网上搜索过,但我无法获得太多信息。
尽早答复将不胜感激。
nhibernate - 状态改变而不是真正的删除
是否可以重载Session.Delete()
行为以不从 DB 执行实际删除但将int State
列的值更新为特殊删除的值?并且通过方法限制然后加载已删除的实体会很好GetAll()
。
c# - NHibernate Map-by-Code ComponentAsId 中的列无效
我有下表
tblChild
父代号子号名称
FatherCode
并且ChildNumber
是表的主键。
由于在这个数据库中经常发生这样的事情(我对它有零控制),我为我创建了以下类来映射 Id:
现在,映射是这样的:
但是当我尝试查询表时,NHibernate 会尝试将 Id 作为列获取。
我不知道我做错了什么,我尝试了很多方法来用这种结构映射它,但没有任何效果:(