5

我正在使用 SQL CE 运行 NHIbernate 解决方案。我正在映射一个表中的字段,如下所示。但是,为了运行一些数据导入,我需要能够暂时关闭身份,以便我可以使用现有密钥导入数据,然后在导入完成后重新打开身份。

我试过直接从这样的解决方案运行 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);
});
4

2 回答 2

0

SQL 应该是一条路,但相信你已经把IDENTITY_INSERT.

要允许插入标识列,您需要将其转换为ON.

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

完成批量插入后,将其转回OFF.

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

有关MSDN的更多详细信息。

于 2012-10-10T12:11:03.723 回答
0

最后,这很简单。

sql 行应该是这样的:

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

它需要在交易中。但是,每次交易您只能在一张桌子上执行此操作,因此并没有真正帮助我太多。

于 2012-10-11T17:31:29.203 回答