- 浏览: 114596 次
- 来自: ...
文章分类
最新评论
-
Juanjuel:
Django多表查询 -
chenokia:
那么在\grails-app\conf 下的DataSourc ...
Grails如何使用外部配置文件 -
viking2439:
有没有方法去指定用户去获得某个权限呢?
[django]总结Django中的用户权限模块
Hibernate version:
1.0.2.0
Mapping documents:
Parent.hbm.xml
Child.hbm.xml
测试代码:
当我设置了
chilid.Id =1的时候,则出现了
Test method TestProject1.TestCategory.AddParentChild threw exception: NHibernate.HibernateException: SQL insert, update or delete failed (expected affected row count: 1, actual affected row count: 0). Possible causes: the row was modified or deleted by another user, or a trigger is reporting misleading row count..
跟踪执行的SQL语句后,发现并不是Insert Child,而是Update Child。
当我将chilid.Id =1注释后,就正常,不过chilid.Id他用 unsaved-value="0"代替。
执行的SQL语句都是正常的。
而我在网上看到一些One2Many的例子中其中表的主键都是自增长的后非assigned的。
所以这个问题很是困惑,最后,自己写了一个自定义的Generator来生产ID,
后来就没有出现上述的情况了。
你们碰到过这种情况吗?
1.0.2.0
Mapping documents:
Parent.hbm.xml
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.0">
<class name="HYLQ.Core.Domain.Parent, HYLQ.Core" table="Parent">
<id name="Id" column="Id" unsaved-value="0">
<generator class="assigned" />
</id>
<property name="Title" type="String" length="200" />
<bag name="Childs" lazy="true" table="Child" inverse="true" cascade="all"
access="NHibernate.Generics.GenericAccessor, NHibernate.Generics" >
<key column="pid" />
<one-to-many class="HYLQ.Core.Domain.Child, HYLQ.Core" />
</bag>
</class>
</hibernate-mapping>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.0">
<class name="HYLQ.Core.Domain.Parent, HYLQ.Core" table="Parent">
<id name="Id" column="Id" unsaved-value="0">
<generator class="assigned" />
</id>
<property name="Title" type="String" length="200" />
<bag name="Childs" lazy="true" table="Child" inverse="true" cascade="all"
access="NHibernate.Generics.GenericAccessor, NHibernate.Generics" >
<key column="pid" />
<one-to-many class="HYLQ.Core.Domain.Child, HYLQ.Core" />
</bag>
</class>
</hibernate-mapping>
Child.hbm.xml
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.0">
<class name="HYLQ.Core.Domain.Child, HYLQ.Core" table="Child">
<id name="Id" column="Id" unsaved-value="0">
<generator class="assigned" />
</id>
<property name="Memo" type="String" length="200" />
<many-to-one name="Parent" column="pid" class="HYLQ.Core.Domain.Parent, HYLQ.Core"
access="NHibernate.Generics.GenericAccessor, NHibernate.Generics" />
</class>
</hibernate-mapping>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.0">
<class name="HYLQ.Core.Domain.Child, HYLQ.Core" table="Child">
<id name="Id" column="Id" unsaved-value="0">
<generator class="assigned" />
</id>
<property name="Memo" type="String" length="200" />
<many-to-one name="Parent" column="pid" class="HYLQ.Core.Domain.Parent, HYLQ.Core"
access="NHibernate.Generics.GenericAccessor, NHibernate.Generics" />
</class>
</hibernate-mapping>
测试代码:
using (ISession session = TestCategory.Factory.OpenSession())
{
int id = 1;
Parent parent = new Parent();
parent.Id = id;
parent.Title = "tetetet";
Child child = new Child();
child.Id = 1;
child.Memo = "222";
child.parent = parent;
parent.Childs.Add(child);
ITransaction trans = session.BeginTransaction();
try
{
session.Save(parent);
trans.Commit();
}
catch
{
trans.Rollback();
throw;
}
}
{
int id = 1;
Parent parent = new Parent();
parent.Id = id;
parent.Title = "tetetet";
Child child = new Child();
child.Id = 1;
child.Memo = "222";
child.parent = parent;
parent.Childs.Add(child);
ITransaction trans = session.BeginTransaction();
try
{
session.Save(parent);
trans.Commit();
}
catch
{
trans.Rollback();
throw;
}
}
当我设置了
chilid.Id =1的时候,则出现了
Test method TestProject1.TestCategory.AddParentChild threw exception: NHibernate.HibernateException: SQL insert, update or delete failed (expected affected row count: 1, actual affected row count: 0). Possible causes: the row was modified or deleted by another user, or a trigger is reporting misleading row count..
跟踪执行的SQL语句后,发现并不是Insert Child,而是Update Child。
当我将chilid.Id =1注释后,就正常,不过chilid.Id他用 unsaved-value="0"代替。
执行的SQL语句都是正常的。
而我在网上看到一些One2Many的例子中其中表的主键都是自增长的后非assigned的。
所以这个问题很是困惑,最后,自己写了一个自定义的Generator来生产ID,
后来就没有出现上述的情况了。
你们碰到过这种情况吗?
发表评论
-
IBatisNet系列-介绍篇
2006-03-25 14:56 1024IBatisNET从名字就可以看出,他是从Java的IBati ... -
IBatisNet系列二-QuickStart篇
2006-03-25 14:59 972本节我参考官方网站上的Quick Start Guide,网址 ... -
IBatisNet系列-执行存储过程
2006-03-25 15:24 1171映射xml文件书写如下 <?xml version=& ... -
IBatis.Net系列-Mapped Statements的语法
2006-03-29 15:25 887语法:<statement id="state ... -
Castle- Startable Facility 简单理解
2006-03-30 17:56 875最近在研究Castle开源项目,就下午学习Startable ... -
IBatis.Net系列-多参数的SQL语句的配置
2006-04-15 12:15 1452由于本人对IBatis.Net的并不是很精通,也是在边学边工作 ... -
MonoRail学习-介绍篇
2006-04-24 10:22 750刚刚结束了使用Castle MonoRail的一个项目,所以想 ... -
MonoRail学习-入门实例篇
2006-04-24 11:51 1332MonoRail学习目录实例代码下载:/Files/maply ... -
MonoRails学习- Layouts
2006-04-24 12:14 830MonoRail学习目录实例代码:/Files/maplye/ ... -
MonoRail学习-Component
2006-04-24 13:30 739MonoRail学习目录在我们asp.net中,经常有界面代码 ... -
Which Style of Workflow When?[转]
2006-05-24 16:58 754http://blogs.msdn.com/davegreen ... -
WF in Asp.Net
2006-05-26 11:19 967这几天在研究Windows Workflow Foundati ... -
WF学习-Console Workflow Application
2006-05-26 16:51 931环境必备:.NET Framework 2.0VS.Net 2 ... -
WF学习-WorkFLow中的参数
2006-05-27 15:46 1162系统和WorkFlow交互有很多种方式,今天介绍的是通过Wor ... -
Castle ActiveRecord.chm
2006-05-31 18:06 757收集 TerryLee's Tech Space 和 SHY5 ... -
使用UserControl时,在Page中定义方式
2006-06-24 10:02 908我们通常,会将一些通用的页面模块作成用户控件,然后加载到页面中 ... -
ASP.Net2.0中自定义控件在page中的注册
2006-06-24 14:15 813今天在网上看到ASP.Net 2.0中注册自定义控件的好方法, ... -
Asp.Net中NHiernate的Session的管理
2006-06-26 11:08 672NHibernate中的Session,在我的理解似乎就相当于 ... -
GridView使用一些记录
2006-06-30 10:45 970现在有个项目开始使用ASP.NET 2.0开发,在开发过程中关 ... -
NHiernate中自定义Generator
2006-07-04 13:50 935我的这个自定义的Generator设置如下: <g ...
相关推荐
NHibernate 是一个流行的开源对象关系映射(ORM)框架,专为.NET平台设计。这个框架允许开发人员将.NET类与数据库表进行映射,从而在处理数据库操作时减少手动编写SQL语句的工作量。通过使用NHibernate,我们可以...
**Nhibernate** 是一个流行的对象关系映射(ORM)框架,用于.NET应用程序,它允许开发者使用面向对象的方式操作数据库,而无需关心底层的SQL语法。本教程将深入介绍Nhibenate的核心概念、配置、实体映射以及如何在...
对于以数据为中心的程序,开发人员往往是在数据库中使用存储过程来实现商业逻辑,这种情况下NHibernate可能不是最好的解决方案,但对于那些基于.NET,并且能够实现OO业务模型和商业逻辑的中间层应用,NHibernate是最...
本实例将带你深入理解C#与NHibernate的结合使用,包括在WinForm和Web应用中的实践,以及如何使用代码生成器提高开发效率。 **一、NHibernate基本概念** 1. **实体(Entities)**: 在ORM中,实体对应数据库中的表,...
在提供的NHibernate.chm文件中,包含了NHibernate的中文文档,涵盖了上述所有概念的详细解释,以及更多高级特性和最佳实践,对于学习和使用NHibernate是非常宝贵的资源。通过深入学习这个API,开发者能够更高效地...
NHibernate 参考文档手册 chm,NHIBERNATE-符合.Net习惯的关系数据库持久化,手册目录摘要: 前言 1. 第一个NHibernate应用程序 1.1. 开始NHibernate之旅 1.2. 第一个持久化类 1.3. 映射cat 1.4. ...
NHibernate 是一个流行的开源对象关系映射(ORM)框架,主要应用于.NET环境,尤其是与ASP.NET结合使用。它简化了数据库交互的过程,允许开发者用面向对象的方式处理数据,而无需直接编写SQL语句。在NHibernate2.0...
在 NHibernate 示例中,数据访问层使用 NHibernate 来处理数据库交互,业务逻辑层处理业务规则,而表示层负责用户界面和与用户的交互。 使用 NHibernate 可以极大地提高开发效率,但同时也需要注意性能优化,例如...
本参考文档2.0版本为中文版,旨在帮助中文开发者更好地理解和应用NHibernate。 1. **对象关系映射(ORM)**:ORM是一种技术,它在对象模型和关系数据库之间建立桥梁,使得开发者可以使用面向对象的方式来处理数据库...
NHibernate 是一个强大的对象/关系映射(ORM)框架,专为.NET环境设计,它简化了数据库操作,将对象模型与关系数据库之间的转换自动化。在本文档中,我们将深入理解NHibernate的体系结构、核心组件以及配置选项。 ...
一切准备就绪后,开始,编译运行,出现问题了,报一个什么finsalConnection无法转变为IDBConnection, 在网上查资料,搞了半天,网上说什么sqlite的dll有多个,要用什么旧的那个dll,谁知哪个,生气中. 去运动运动,回来收拾里!...
NHibernate是一款开放源代码的对象关系映射(ORM)框架,它为.NET平台上的应用程序提供了强大的持久化服务。NHibernate的核心在于将面向对象模型与关系型数据库之间的映射自动化,使得开发人员能够专注于业务逻辑的...
1. **对象关系映射**:NHibernate 提供了一种方式,将数据库中的表映射为 .NET 类,反之亦然。这样,开发者可以通过操作对象来实现对数据库的操作,而无需编写 SQL 语句。 2. **自动数据持久化**:当对象的状态改变...
在.NET环境中,NHibernate是一个非常流行的对象关系映射(ORM)框架,它允许开发者使用面向对象的编程语言(如C#)来操作数据库,而无需关心底层SQL语句的编写。这篇教程将深入探讨如何在C# WinForm应用中有效地使用...
【标签】"NHibernate c#" 暗示这个压缩包是为使用 C# 语言开发的项目设计的,因为 NHibernate 提供了对 C# 的支持,使得C#开发者可以利用其ORM功能。 【压缩包子文件的文件名称列表】中的文件如下: 1. **readme....
nhibernate c#nhibernate c#nhibernate c#nhibernate c#nhibernate c#nhibernate c#nhibernate c#
NHIBERNATE - 符合.Net习惯的关系数据库持久化 NHibernate参考文档 2.0.0 -------------------------------------------------------------------------------- 目录 前言 1. 第一个NHibernate应用程序 1.1. ...
NHibernate 是一个流行的开源对象关系映射(ORM)框架,专为.NET 平台设计,它简化了数据库操作,使得开发人员可以使用面向对象的编程模型来处理数据库交互。中文参考文档提供了对 NHibernate 体系结构和用法的详细...