0

質問:XMLからnHibernate(流暢)を使用してデータを一括挿入していますnHibernate BulkInsert Identity列?

私はXMLファイルをデータテーブルに読み込んでからリストを作成しました。 その後、私はそのリストでBulkInsertを実行します。このよう

:それは正常に動作します

// http://stackoverflow.com/questions/982295/saving-1000-records-to-the-database-at-a-time 
    public static void BulkInsert(List<dynamic> ls) 
    { 
     //List<DB.Tables.T_Users> ls = new List<DB.Tables.T_Users>(); 
     // Read from DataTable 


     var sessionFactory = CreateSessionFactory(); 

     //using (ISession session = sessionFactory.OpenSession()) 

     // http://davybrion.com/blog/2008/10/bulk-data-operations-with-nhibernates-stateless-sessions/ 
     using (IStatelessSession session = sessionFactory.OpenStatelessSession()) 
     { 
      using (var tx = session.BeginTransaction()) 
      { 
       session.SetBatchSize(ls.Count); 
       foreach (var objThisItem in ls) 
       { 
        //session.SaveOrUpdate(objThisItem); 
        session.Insert(objThisItem); 
       } 
       tx.Commit(); 
      } 
     } 
    } 

、ユーザーID(オートID)が新たに割り当てられているだけのこと。

これはどのようにユーザを挿入し、NHibernateはしてIDを保存することができますT_User

CREATE TABLE [dbo].[T_User](
    [USR_ID] [int] IDENTITY(1,1) NOT NULL, 
    [USR_Name] [nvarchar](50) NULL, 
    [USR_Prename] [nvarchar](50) NULL, 
    [USR_User] [nvarchar](50) NULL, 
    [USR_Password] [nvarchar](50) NULL, 
    [USR_Language] [nvarchar](5) NULL, 
    [USR_Hash] [nvarchar](50) NULL, 
    [USR_isLDAPSync] [bit] NOT NULL, 
    [USR_Domaene] [nvarchar](255) NULL, 
    [USR_Hide] [bit] NOT NULL, 
PRIMARY KEY CLUSTERED 
(
    [USR_ID] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY] 

GO 

のですか? 私はその後、ユーザグループマッピングを挿入する必要があるので、これはIDの変更の場合に失敗します...

.NET &のSqlClientはSqlBulkCopy とそのための

System.Data.SqlClient.SqlBulkCopyOptions.KeepIdentity

を持っています。

しかし、何がnHibernateを持っていますか?

そして、私はそれで午前ながら、何それは

System.Data.SqlClient.SqlBulkCopyOptions.KeepNulls 

答えて

0

のために正しいマッピングを試してみているん:

mapping => mapping.Id(x => x.Id).GeneratedBy.Assigned() 
+0

しかし... ID(X => x.BE_ID).GeneratedBy。 ID()。列( "BE_ID")。根本的に正しいです、私はそれが生成されたidendity(後で、BackOfficeでユーザーを作成することができます)したい。私は最初のテーブルの人口の自動割り当てをオフにしたいだけです。 –