2014-10-09 4 views
0

을 반환하지 않습니다. (어느 작품). Execute Command는 항상 0xfffff를 반환했습니다. SQLQuery는 마지막 select 문 또는 코드 작성 방법에 따라 삽입 된 행의 값을 반환합니다. 쿼리의 마지막 두 줄은삽입을 감안할 때 IDENTITY

using (db=new MyEntites()) 
{ 
    var inserted = db.Database.SqlQuery<decimal>(query,parms} 
} 

: 문서에서

SET NOCOUNT OFF 
Select SCOPE_IDENTITY() AS newID 
+0

마지막 줄이 단순히 'RETURN SCOPE_IDENTITY()'이면 작동합니까? – DavidG

+0

쿼리 문자열 또는 .NET 코드에 넣으시겠습니까? .NET에서 SCOPE_IDENTITY에 대한 참조를 찾을 수 없습니다. –

+0

내 대답을 참조하십시오. – DavidG

답변

0

감사합니다, 1 단계는 쿼리 문자열이 같은 것을 넣어를 선택

Select SCOPE_IDENTITY() as TESTID; 

는이 EF 양식을 사용 SQLQuery의 경우 소수점 유형은 위의 select 예제에 대해 리턴되는 값입니다.

using (db=new MyEntites()) 
{ 
    var identity = db.Database.SqlQuery<decimal>(query,parms} 
} 
1

ExecuteSqlCommand 방법에 대해는, 반환 값은

명령을 실행 한 후 데이터베이스에 의해 반환되는 결과이다.

즉, RETURN은 결과 집합이 아닌 프로 시저의 값이어야합니다. 그래서 마지막 명령으로 저장 프로 시저에서이 작업을 수행 : 같은 마지막으로 제안을

RETURN SCOPE_IDENTITY() 
+0

나는 직접 쿼리를 작성하는 대신 Stored Procedure를 사용하지 않습니다. –

+0

SET NOCOUNT ON; INSERT INTO dbo.SomeTable (field1, field2, field3) VALUES (@ fields1, @ field2, @ field3); SCOPE_IDENTITY()를 선택하십시오. SET NOCOUNT OFF; –

+0

스토어드 프로 시저를 사용하고 있지 않다면 (아마도 현재 메모리에 문제가있다.) ExecuteSqlCommand의 리턴 값은 결과 집합이 아니라 영향을받는 행의 개수이다. 대신에'SqlQuery <>'를 사용해보아야 할 수도 있습니다. – DavidG