使用 Fluent NHibernate Auto Mapping 从基实体类映射类型对象的 ID
Posted
技术标签:
【中文标题】使用 Fluent NHibernate Auto Mapping 从基实体类映射类型对象的 ID【英文标题】:Using Fluent NHibernate Auto Mapping to map IDs of type object from base Entity class 【发布时间】:2009-07-06 19:37:12 【问题描述】:在我现在正在进行的项目中,我们有如下所示的基本实体类:
public abstract class Entity<T> where T : Entity<T>
public virtual object Id get; protected set
// Equals, GetHashCode overrides, etc...
从 Entity 继承的大多数类应该将 Id 映射到 SQL Server 数据库中的 int 列,但至少有一个需要映射到 long (bigint)。
是否可以创建 FluentNH 自动映射约定以默认将这些对象 ID 映射到 int? 然后我们可以使用另一个约定或 IAutoMappingOverride 来处理长 Id。
谢谢!
【问题讨论】:
【参考方案1】:回答我自己的问题...有可能。
你可以这样定义约定:
internal class PrimaryKeyConvention : IIdConvention
public bool Accept(IIdentityPart id)
return true;
public void Apply(IIdentityPart id)
if (<ID should be long>)
id.SetAttribute("type", "Int64");
else
id.SetAttribute("type", "Int32");
【讨论】:
以上是关于使用 Fluent NHibernate Auto Mapping 从基实体类映射类型对象的 ID的主要内容,如果未能解决你的问题,请参考以下文章
使用 Fluent NHibernate 和 NHibernate 3 将枚举映射为 Int
NHibernate 2 + Fluent Nhibernate 中等信任
在使用fluent-nhibernate配置nhibernate时,为什么会出现MissingMethodException?