2010-10-13 42 views
0

請幫忙!我新來NHibernate和我停留在問題 - 我無法通過NHibernate的創建新的持久化的對象(2)與MySql一起使用nHibernate時身份生成的問題

在此代碼:

foreach (var item in items) 
{ 
if (item.price > 0) 
{ 
    if (_itemsForBuy.FirstOrDefault(i => item.itemid == i.itemId) == null) 
    { 
    var ifb = new ItemForBuy() 
    { 
    id = 0, 
    item = item, 
    count = 100 
    }; 

    ISession session = SessionHelper.CurrentSession; 
    ifb.id = (int)session.Save(ifb); //at first iteration returs 0, at second - exception 
    _itemsForBuy.Add(ifb); 
    } 
} 
} 

...在第二次迭代拋出的異常:

無法插入: [xxx.ItemForBuy] [SQL:INSERT INTO itemsforbuy(計數,itemid的)VALUES(, ?)

與內部異常:

重複條目 '0' 爲鍵 '主要'

ItemForBuy.hbm.xml:

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" 
        assembly="xxx" 
        namespace="xxx"> 

    <class name="ItemForBuy" table="itemsforbuy" lazy ="false"> 

    <id name="id" type="Int32" column="id" unsaved-value="0"> 
     <generator class="identity"/> 
    </id> 
... 

類:

public class ItemForBuy 
{ 
public int id 
{ 
    get; 
    set; 
} 
... 

in db:

CREATE TABLE IF NOT EXISTS `xxx`.`itemsforbuy` (
    `id` INT NOT NULL AUTO_INCREMENT , 
    `itemid` INT NOT NULL , 
    `count` INT NULL , 
    PRIMARY KEY (`id`)) 
ENGINE = InnoDB 

我做錯了什麼?

回答

1

問題解決了。原因在於不是AUTO_INCREMENT'id'字段。我沒有將MySQL Workbench與數據庫同步,我認爲該id是自動增量,但它不是真的。