2

NHibernateとSqlServerを使用して、エンティティを挿入し、列の値の1つを新しく生成されたIDに設定することは可能ですか?

純粋なSQLでは、デフォルト値を追加することでそれを行うことができます

テーブルを作成します。

create table Test
   id int identity,
   name varchar(12),
   parentId int NOT NULL

制約を追加します。

alter table Test constraint ... default ident_current('Test') for parentId

その後、parentIdをスキップするか、DEFAULTキーワードを使用します。

insert into Test values('TEST')
insert into Test values('TEST', DEFAULT)

私が間違っている場合は訂正してください。ただし、上記のステートメントはNHibernateによって生成されることはないと思いますか?

今のところ、最初にエンティティを保存してから、新しく作成したIDで更新しています。この場合、特定の列にNULLを受け入れさせる必要があるため、db構造にブレーキがかかります。

最初は簡単になりますが、数時間経っても答えが見つかりません:/

前もって感謝します

4

1 に答える 1

2

これは、プロパティマッピングで生成された属性を使用して実行できます。データベースによって設定されるデフォルトには、を使用しますgenerated="insert"。Fluent NHibernateマッピングには、を使用します.Generated().Insert()

編集:

public class Test
{
    private Test _parent;

    public Test()
    {
        _parent = this;
    }

    public Test Parent
    {
        get { return _parent == this ? null : _parent; }
        set { _parent = value ?? this; }
    }
}
于 2011-03-23T16:16:20.577 に答える