想在主从表中实现一个简单的一对多功能.但在保存时候出错.老是说"could not synchronize database state with session" ,请高手解答.不胜感激
主表: orderinfo mapping 文件
xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns ="urn:nhibernate-mapping-2.0">
<class name="Nhibernate.OneToMany.Order,Nhibernate.OneToMany" table="orderinfo" >
<id name="Id" column="id" type ="Int32" unsaved-value="0">
<generator class ="assigned" />
</id>
<property name ="OrderNo" column ="OrderNo" type ="String(10)" />
<property name ="Name" column ="Name" type ="String(50)" />
<property name ="Date" column ="Date" type ="DateTime" />
<set name="Products" table="item" cascade="all" inverse="true" lazy="false">
<key column = "OrderNo" />
<one-to-many class="Nhibernate.OneToMany.Products,Nhibernate.OneToMany" />
</set>
</class>
</hibernate-mapping>字表 item mapping 文件:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns ="urn:nhibernate-mapping-2.0">
<class name="Nhibernate.OneToMany.Products,Nhibernate.OneToMany" table="item" >
<id name="Id" column="id" type ="Int32">
<generator class ="assigned" />
</id>
<property name="PId" column="pid" type ="String(10)" />
<property name="OrderNo" column="OrderNo" type ="String(10)" />
<property name="Name" column="name" type ="String(50)" />
<many-to-one name="Order" class="Nhibernate.OneToMany.Order,Nhibernate.OneToMany" column="OrderNo" />
</class>
</hibernate-mapping> 主程序代码: factory = cfg.BuildSessionFactory();
session = factory.OpenSession();
ITransaction transcation = session.BeginTransaction();
Order Order = new Order();
Order.OrderNo ="0001";
Order.Name="order0001";
Order.Date = DateTime.Now;
Order.Id=1;
Products p = new Products();
p.Name="book";
p.PId ="1234567";
p.Order =Order;
Order.Products.Add(p,p);
session.SaveOrUpdate(Order);
transcation.Commit();
session.Close();
MessageBox.Show("Added OK!");
主表: orderinfo mapping 文件
xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns ="urn:nhibernate-mapping-2.0">
<class name="Nhibernate.OneToMany.Order,Nhibernate.OneToMany" table="orderinfo" >
<id name="Id" column="id" type ="Int32" unsaved-value="0">
<generator class ="assigned" />
</id>
<property name ="OrderNo" column ="OrderNo" type ="String(10)" />
<property name ="Name" column ="Name" type ="String(50)" />
<property name ="Date" column ="Date" type ="DateTime" />
<set name="Products" table="item" cascade="all" inverse="true" lazy="false">
<key column = "OrderNo" />
<one-to-many class="Nhibernate.OneToMany.Products,Nhibernate.OneToMany" />
</set>
</class>
</hibernate-mapping>字表 item mapping 文件:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns ="urn:nhibernate-mapping-2.0">
<class name="Nhibernate.OneToMany.Products,Nhibernate.OneToMany" table="item" >
<id name="Id" column="id" type ="Int32">
<generator class ="assigned" />
</id>
<property name="PId" column="pid" type ="String(10)" />
<property name="OrderNo" column="OrderNo" type ="String(10)" />
<property name="Name" column="name" type ="String(50)" />
<many-to-one name="Order" class="Nhibernate.OneToMany.Order,Nhibernate.OneToMany" column="OrderNo" />
</class>
</hibernate-mapping> 主程序代码: factory = cfg.BuildSessionFactory();
session = factory.OpenSession();
ITransaction transcation = session.BeginTransaction();
Order Order = new Order();
Order.OrderNo ="0001";
Order.Name="order0001";
Order.Date = DateTime.Now;
Order.Id=1;
Products p = new Products();
p.Name="book";
p.PId ="1234567";
p.Order =Order;
Order.Products.Add(p,p);
session.SaveOrUpdate(Order);
transcation.Commit();
session.Close();
MessageBox.Show("Added OK!");
解决方案 »
- C#的接口协定,为啥要在属性的get前面加一个[Pure]?
- 向数据库添加信息,如何在dataGridView中显示出来
- DataGridView显示的数据在左右拉动的时候错乱了,只是显示的
- 怎理解IM软件创建数据库连接对象SqlConnection 不能定义为static?
- c# 中关于正则表达式
- 【初学者求教】代码读不懂求解释
- 求一段字符的总长度应该怎么求?
- VS05 c# 基于桌面treeView怎么传递值?
- FileStream读DBF文件报异常,用SQL读DBF文件正常,WHY?
- .net 打印(有那种方法可以支持所有的打印机)
- 求助:关于在Word文档"指定位置"加入图片的问题.
- 谁研究NHibernate亚,看了1周了没有头绪,从何看起?如何研究这个系统?已经看了张老三的文章,看不懂!
如果想要完整的测试代码,请留下email
再问大家一次: 如何结帖子啊,当时打出100分请教,结果后来自己搞定.所以想自己把帖子结了.
<generator class ="assigned" />
</id>
在多的一方中是不能使用assigned标识符的(我用的是0.2版),
因为SaveOrUpdate(obj)无法确定对象是新增的还是修改过。
呵呵,给我发一份代码吧
谢谢了
[email protected]
呵呵,给我发一份代码吧
谢谢了
[email protected]