我有FluentNHibernate中的域名對象的類型爲object
的Id將永遠是int
(推理如下)。現在我有一個SQLite後端。我想將Id作爲自動增量進行映射。到目前爲止,我有:作爲int idententity映射對象ID
public class UserMap : ClassMap<User>
{
public UserMap()
{
Table("Users");
Id(x => x.Id).CustomType<int>().GeneratedBy.Native();
Map(x => x.Email);
}
}
public class User
{
public virtual object Id { get; set; }
public virtual string Email { get; set; }
}
但在加載地圖時,它拋出與爲User.Id
屬性(堆棧跟蹤信息Identity type must be integral (int, long, uint, ulong)
一個FluentConfigurationException
當我打電話Native
說,它發生再次,我真的只是想自動。 -Increment整數。
推理對象ID
我們有業務需求,支持多種RDBMS的,以及MongoDB的。我已經清楚地意識到,這是一個壞主意,所以,請FO關於這個問題。 Mongo使用ObjectId(Guid類似的連續值類型),因爲它是默認的ID類型。這個想法是隱藏實際的ID類型(因爲它依賴於數據層),但重用模型並有兩種不同的數據訪問實現(Mongo & NHibernate)。
不,同樣的錯誤 – kelloti 2012-03-09 15:24:07
你是什麼意思「刪除Id屬性」?我仍然需要一個Id,但它不必擁有一個公共getter ... – kelloti 2012-03-09 16:01:23
我現在有'Id(x => x.Id).CustomType().GeneratedBy.Custom ()'它已經越過了以前的錯誤。改爲使用'StaleStateException':「行已被另一個事務更新或刪除(或未保存的值映射不正確)」。爲什麼它試圖「更新」而不是「插入」? –
kelloti
2012-03-09 16:38:10