在我正在进行的项目中,我们有基本的Entity类,如下所示:
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。
谢谢!
答案 0 :(得分:0)
回答我自己的问题......这是可能的。
您可以像这样定义约定:
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");
}
}