1

FNH マッピングから自動インクリメントを使用して、プライマリ キーとして Decimal を作成することは可能ですか??

4

2 に答える 2

2

私は同じことに出くわしました。がこの制約fluent-nhibernate強制しているようです。

データベースがこれを許可することがわかっている場合 (この場合は問題ないはずです)、次のように制約をバイパスできます。

Id(x => x.MyDecimalId).GeneratedBy.Custom<IdentityGenerator>();

これは同じ戦略を使用しますIdentity()が、例外は発生しません。私の場合、次のように拡張メソッドを追加しましたIdentityGenerationStrategyBuilder<IdentityPart>

public static class IdentityPartExtensions
{
    public static void NumericIdentity(this IdentityGenerationStrategyBuilder<IdentityPart> identityBuilder)
    {
        identityBuilder.Custom<IdentityGenerator>();
    }
}

したがって、次のことができます。

Id(x => x.MyDecimalId).GeneratedBy.NumericIdentity();
于 2014-07-07T03:12:44.393 に答える
0

自動インクリメントを実現するには、ID 型が整数の int、long、uint、ulong である必要があります。

元 :

public class User { public virtual int Id { get; 設定; } パブリック仮想 IList 名 { get; 設定; } }

Id(x => x.ID).Column("ID").GeneratedBy.Increment();

10 進プロパティの場合: Id(x => x.ID).Column("ID").GeneratedBy.Assigned();

新しいオブジェクトを作成するときに値を割り当てます。値は、データベースで最後に生成されたキーの増分である必要があります。

または、NHibernate 用のカスタム ID ジェネレーターを実装することもできます。 http://lucisferre.net/2009/07/14/implementing-a-custom-id-generator-for-nhibernate/

于 2012-11-30T05:15:33.260 に答える