C# NHibernate不保存对象,也不显示错误

C# NHibernate不保存对象,也不显示错误,c#,mysql,visual-studio,nhibernate,C#,Mysql,Visual Studio,Nhibernate,我无法使用NHibernate将对象保存到数据库。程序不会抛出错误,但记录仍不在数据库中。我还输出sql查询,但查询没有执行 我在表“order_product”中使用复合键。表是“order”的子级 数据库表:订购产品 order_id (PK) product_id (PK) count price 映射: <?xml version="1.0" encoding="utf-8" ?> <hibernate-mapping xmlns="urn:nhibernate-ma

我无法使用NHibernate将对象保存到数据库。程序不会抛出错误,但记录仍不在数据库中。我还输出sql查询,但查询没有执行

我在表“order_product”中使用复合键。表是“order”的子级

数据库表:订购产品

order_id (PK)
product_id (PK)
count
price
映射:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" auto-import="true">
  <class name="Service.OrderProduct, Service" lazy="true" table="order_product">
    <composite-id>
      <key-property name="productId" column="product_id" type="string"/>
      <key-property name="orderId" column="order_id" />
    </composite-id>
    <property name="count" type="int" column="count" not-null="true" />
    <property name="price" type="double" not-null="true" />
    <many-to-one name="Order"   column="order_id"   fetch="join" cascade="all"/>
  </class>
</hibernate-mapping>
保存代码:

OrderProduct op = new OrderProduct();
op.order_id= 133;
op.product_id = "product_key_id";
op.price = 20.4;
op.count = 10;
OpenSession().Save(op);

您可能需要关闭(处置)会话或刷新会话,以使NHibernate将更改写入数据库。

尝试删除多对一上的所有级联,甚至可能删除提取。

我使用代理键解决了问题。

我尝试在事务中包装代码并使用transaction.Commit();我还尝试了OpenSession().Flush();但对象仍然不在数据库中。保存其他对象可以正常工作(我尝试在上面的代码之前和之后保存其他对象)。好的,那么这可能不是刷新问题。这看起来像一个多对多关系表。如果是,这个表是否也映射到其他地方,可能隐式地映射到HasMany中?确实,“order\u product”是多对多表,但由于它有一些附加属性(不仅是order\u id和product\u id),我在映射中只使用多对一和一对多。我还尝试删除多对一映射并保存对象,但仍然不起作用。问题似乎出在我的地图上。我的OrderProduct类可以吗?如果您有log4net设置来记录NHibernate,请在.save和a.flush2010-08-29 09:16:31647[1]debug NHibernate.Event.Default.DefaultSaveOrUpdateEventListener[(null)]之前发布调试级别中的日志部分。保存瞬态实例2010-08-29 09:16:31653[1]调试NHibernate.Event.Default.AbstractSaveEventListener[(null)]-生成的标识符:组件[productId,orderId]{'productId'='test_pid_1','orderId'='10',使用策略:NHibernate.Id.Assigned 2010-08-29 09:16:31653[1]调试NHibernate.Event.Default.SaveEventListener[(null)]-保存[Service.OrderProduct#服务.OrderProduct#服务.OrderProduct]即使我删除了xml文件的一部分,它也不起作用。看来我有问题是因为。。。
OrderProduct op = new OrderProduct();
op.order_id= 133;
op.product_id = "product_key_id";
op.price = 20.4;
op.count = 10;
OpenSession().Save(op);