1
5
我觉得奇怪的是,你需要许多会议来做一项工作。通常一次会议就足以完成所有工作。
也就是说,Hilo生成器在调用时设置实体的id属性
更新=========================================================================== 这是我在一个特定案例中使用的一种方法,它在保持NHibernate兼容性的同时进行纯sql插入。
因此,这个方法采用新构造的实体
请注意,此调用不会将实体放置在任何类型的nhibernate托管空间中。因此,您仍然需要创建一个放置对象的位置,并对每个对象进行保存。另外请注意,我在纯sql插入中使用了这个,除非您指定
总之,您想要的是为一个对象生成一个Id,这个Id将在将来的某个时候被持久化。这会带来一些问题,例如处理由于回滚和提交失败而不存在的条目。此外,imo nhibernate不是这个特定工作的工具,您不需要nhibernate来执行大容量插入,除非有一些复杂的实体逻辑太昂贵(在开发时)而无法自己实现。 另外请注意,这意味着您需要暂时分离的实体,但是除非您在第一个会话上调用.nhSes.Save(obj)并刷新其内容,否则无法使用这些实体,因此第二个会话在调用暂时对象上的Load时,数据库中会有一个与您想要实现的内容相矛盾的现有行。 我不害怕冲击数据库,只是从上到下优化程序,以便能够处理卷。如果使用ado.net甚至isqlquery包装的查询(使用上面提供的方法)可以以4倍的性能获得相同的结果,那么仅使用nhibernate进行插入似乎会适得其反 |
Nico Pizzo · 子查询上的nhibernate联接 6 年前 |
YMC · 无法在Nhb 4中构建只有特定字段可供选择的2个表联接 6 年前 |
Stu · 具有特定类型的字符串外键的NHibernate映射 6 年前 |
Zout · 为Hibernate的HiLo算法管理的列生成ID 7 年前 |