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