问:我正在使用nHibernate (fluent)从XML批量插入数据。
我将XML文件读入datatable,然后从它创建一个列表。然后,我在该列表上运行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();
}
}
}它工作得很好,只是新分配了User-ID (Auto-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如何使用nHibernate插入用户并保留I?之后我需要插入用户-组映射,因此如果ID发生更改,此操作将失败...
.NET & SqlClient有SqlBulkCopy和
System.Data.SqlClient.SqlBulkCopyOptions.KeepIdentity
就为了这个。
但是nHibernate有什么呢?
当我在它的时候,它有什么用呢?
System.Data.SqlClient.SqlBulkCopyOptions.KeepNulls发布于 2022-02-11 15:54:36
您可以创建临时Sessionfactory。假设你有
private ISessionFactory CreateSessionFactory(Action<Configuration> addconfigure)和代码
var sessionFactory = CreateSessionFactory(config =>
((SimpleValue)config.GetClassMapping(typeof(User)).Identifier)
.IdentifierGeneratorStrategy = "assigned");发布于 2012-03-19 20:57:29
尝试使用以下命令更正映射:
mapping => mapping.Id(x => x.Id).GeneratedBy.Assigned()https://stackoverflow.com/questions/9770334
复制相似问题