5

SQL CEを使用してNHIbernateソリューションを実行しています。 私はテーブルのフィールドを以下のようにマッピングしています。 しかし、データのインポートを実行するには、IDを一時的に無効にする必要があるため、既存のキーでデータをインポートしてから、インポートが完了したらIDを元に戻すことができます。NHibernate - 一時的にIDをオフにする

私はこのような溶液から直接SQLクエリを実行してみた:

session.CreateSQLQuery(@"SET IDENTITY_INSERT [Article] ON"); 

が、これは効果がないようです。

一時的にこれを有効または無効にする方法はありますか?

Property(x => x.ArticleId, m => 
{ 
    m.NotNullable(true); 
    m.UniqueKey("UQ_Article_ArticleId"); 
    m.Column(cm => cm.SqlType("INT IDENTITY")); 
    m.Generated(PropertyGeneration.Insert); 
    m.Insert(true); 
    m.Update(false); 
}); 

答えて

0

最後はかなり単純でした。

SQL行は、このされている必要があります:

session.CreateSQLQuery(@"SET IDENTITY_INSERT [Article] ON").ExecuteUpdate(); 

、それはトランザクション内であることを必要としていました。しかし、これはトランザクションごとに1つのテーブルでしか行うことができないため、それほど大きな助けにはなりませんでした。

+0

誰もが実際にこの作業をしていますか? – Dan

0

SQLは行く方法でなければなりませんが、私はあなたがIDENTITY_INSERTの意味を逆転していると信じています。

ID列を挿入するには、ONにする必要があります。

session.CreateSQLQuery(@"SET IDENTITY_INSERT [Article] ON"); 

バルクを挿入したら、OFFに戻してください。

session.CreateSQLQuery(@"SET IDENTITY_INSERT [Article] OFF"); 

詳細はMSDNです。

+0

はい、私はそれを試みましたが動作しません。上記の私の例は、私がSQLをどのように実行しているかを示しています。実際には、あなたが言及したようにしてきました。最初に "オン"にした後に "オフ"にします。 – user874615

関連する問題