我有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