2010-01-11 89 views
2

我有一個主列作爲ID的表。但是這一列不是一個身份專欄。所有的值都明確提供。我們可以停止自動遞增的ID列嗎?

下面是我的映射類

public ObjectTypeMap() 
    { 
     Table("OBJECTTYPE"); 
     Id(x => x.ObjectTypeId); 
     Map(x => x.Title).Not.Nullable(); 
     Map(x => x.Description); 
    } 

但是當我嘗試使用session.save保存這個對象,我得到一個錯誤說

「無法將NULL值插入列‘ObjectTypeId’,表'DiscoveryWEBTest.dbo.ObjectType';列不允許爲空,INSERT失敗。\ r \ n該語句已被終止。「

但在我的對象中,我提供了ObjectTypeId的值。

問題是連貫NHibernate認爲ID映射爲自動增量列,但在數據庫中ObjectTypeId不是一個標識列,這就是爲什麼插入語句沒有得到任何值並引發空錯誤。

有沒有一種方法可以告訴列是ID列,但其值不是自動遞增的?

在此先感謝

回答

7

地圖這樣的:

Id(x => x.ObjectTypeId).GeneratedBy.Assigned(); 
+0

感謝那是什麼我想要的。 我是新來的,仍然在探索它。 – Ashish 2010-01-11 11:02:01

+0

沒問題。它實際上有點幫助我瞭解XML映射,或者至少了解它們。你會發現Fluent的等價物有相似的名字,但並不總是被記錄在案。 – 2010-01-11 11:18:09