5

SQL CE를 사용하여 NHIbernate 솔루션을 실행 중입니다. 아래 표와 같이 하나의 필드를 매핑합니다. 그러나 일부 데이터 가져 오기를 실행하려면 ID를 일시적으로 해제하여 기존 키를 사용하여 데이터를 가져올 수 있어야합니다. 그런 다음 가져 오기가 완료되면 ID를 다시 켜십시오. 나는이 같은 솔루션에서 직접 SQL 쿼리를 실행하려고했습니다NHibernate - 일시적으로 ID를 해제하십시오.

:

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(); 

과는 트랜잭션 내에서 할 필요가 있었다. 그러나 트랜잭션 당 하나의 테이블에서만이 작업을 수행 할 수 있으므로 그렇게 많이 도움이되지는 못합니다.

+0

누구나 실제로이 작업을 했습니까? – Dan

0

SQL 갈 수있는 방법이어야한다,하지만 난 당신이 IDENTITY_INSERT의 의미를 반전 믿습니다.

식별 열을 삽입하려면 ON으로 설정해야합니다.

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

대량을 삽입 한 후에는 OFF으로 다시 설정하십시오.

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

자세한 내용은 MSDN입니다.

+0

예, 시도했지만 작동하지 않습니다. 위의 예제는 SQL을 실행하는 방법을 보여주는 것입니다. 실제로 저는 언급 한대로 행동했습니다. 먼저 "On"하고 그 후에는 "Off"합니다. – user874615

관련 문제