
nhibernate
左直拳
程序猿
展开
-
NHibernate不支持复杂的linq,就一定要用DataTable这么低级吗
有些linq,好不容易写出来,正想扬眉吐屁一番,不料用NHibernate一执行,却报错,说是不支持,我靠。只好捏着鼻子写一大段sql,交给它。这种直接执行SQL的情况,我看我同事写的,全部都是返回DataTable类型。 DataTable类型,我以前用得太多了。直接行、列这样子处理,感觉就是在直接操作数据库,有点不符合当代潮流。太low了。怎么ORM起来呢?其实也可以这样的:string sq原创 2016-08-26 20:00:22 · 1950 阅读 · 0 评论 -
nhibernate实体类主键ID赋值问题
有个同事忽然来找我,说他遇到了一个问题,在调用nhibernate 进行update数据的时候报错,说是有数据行锁定。看代码,没啥问题。直接在PL/SQL developer里对数据库进行插入,也没啥问题。应该不是有事务没提交,表被锁了的情况。但我们水平低,为防万一,还是重启了数据库。好不容易重启后再试,问题依旧在,几度夕阳红。后来将update改为insert,发现还是错。找到报错的详细信息,提示原创 2016-08-26 20:22:28 · 2754 阅读 · 0 评论 -
NHibernate直接执行SQL进行插入
有时候,需要用NHibernate直接执行SQL进行数据insert或update。怎么写呢?简单一点的,可以直接拼凑出来的SQL,这样写:using NHibernate;StringBuilder sb = new StringBuilder($@"insert into {tablename}(id,report_Id) values({id},{reportid})");ISQLQuery原创 2016-08-26 20:42:18 · 3603 阅读 · 0 评论 -
NHibernate查询导致Update问题
用NHibernate,总感觉怪事多罗罗。比如说,明明我们是在查询,却报错,刨根问底找到出错原因,竟然是因为执行了一些Update甚至Insert!老天,我们明明只是查询而已,什么时候有更新过数据?NHibernate,你是不是傻的?但事实就是事实,它就是发生了,它就是报错了。前几天,我再次遇到这个问题:查询导致Update。我留意了一下代码,发现这个实体类有个对象首先从数据库中获取出来,这时候一切原创 2016-08-26 19:45:03 · 2234 阅读 · 0 评论 -
Fluently NHibernate 插入CLOB字段
ORA-01461: can bind a LONG value only for insert into a LONG column插入oracle某表时报的错。查来查去,是插入的某个字段值超长。怎么会超长呢?一个CLOB类型的字段,号称有4G容量的。表设计: 我用的是Fluently NHibernate,for .net。实体类及映射如下: public class CatchResu原创 2016-07-19 19:19:36 · 2899 阅读 · 0 评论 -
Fluently NHibernate映射多个实体程序集
Fluently NHibernate有个好处就是可以在代码里定义实体类,而不必写冗长的XML。但通常,一个项目对应的所有的实体类,都编译成一个DLL。如果有个项目,是在某个父项目的基础上再扩展,那么这个子项目,一方面有自己的实体类DLL,还有父项目的DLL,要如何映射?网上寻寻觅觅,找不到啥资料,只有一个老外提到了类似的问题。也没其他人回答,他自己给出了答案。当然他那个可能是JAVA的,我是.NE原创 2016-02-28 16:02:54 · 2505 阅读 · 1 评论 -
nhibernate的关系
用nhibernate,觉得比较难把握的是其中表间的关系。我用的是Fluently Nhibernate,直接用代码,而不是XML来书写代码与数据表的映射。其中表间关系有3种: 1、References(多对一) 2、HasMany(一对多) 3、HasOne(一对一)1、References(多对一) 用于从表映射主表。常与主表映射从表的HasMany一起使用,可在同一事原创 2016-11-06 16:39:26 · 981 阅读 · 0 评论 -
fluent nhibernate映射的数值类型问题
fluent nhibernate中,数值类型设置不当,就可能会引发一些意想不到错误。一、引发映射错误 比如,oracle数据库中,字段ID类型是number,结果用codesmith生成代码,实体类中自动写成decimalpublic virtual Decimal ID { get;set;}结果在映射中这样写,运行过程中会引发错误:Id(s => s.ID).GeneratedBy.Sequ原创 2017-08-04 20:41:00 · 765 阅读 · 0 评论 -
nhibernate一表对应多个实体类问题
应用了NHIBERNATE的web页面忽然报错:未明确定义列。将NHIBERNATE生成的SQL语句拿出来直接运行,发现里面有两个字段的名字一样,类似:select row_.* from ( select meta0_.ID as ID6_, meta0_.NAME as NAME6_, meta0_.PARENTID as PARENTID6_,meta0_.ParentID as...原创 2018-09-28 14:17:54 · 1754 阅读 · 0 评论