2009-07-06 15 views
0

を型オブジェクトのIDをマッピングするために流暢NHibernateは、自動マッピングを使用して、我々はこのようになりますベースのエンティティクラスがありますエンティティから継承ベースのエンティティクラスから、私は今働いているプロジェクトで

public abstract class Entity<T> where T : Entity<T> 
{ 
    public virtual object Id { get; protected set }  
    // Equals, GetHashCode overrides, etc... 
} 

ほとんどのクラスをSQL ServerデータベースのIDをint列にマップする必要がありますが、少なくとも1つはlong(bigint)にマップする必要があります。

FluentNH自動マッピング規則を作成して、これらのオブジェクトIDをデフォルトでintにマップできますか?
次に、長いIDを処理するために別の規則またはIAutoMappingOverrideを使用できます。

ありがとうございます!

答えて

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"); 
    } 
}