SMALLINT
인 ID를 얻으려는 중입니다. 삽입문에 OUTPUT
을 사용하고 DataContext.ExecuteQuery
(또는 DataContext
방법이 더 적절할 것입니다)을 사용하고 있습니다.여기에 "지정된 캐스트가 유효하지 않습니다"오류를 어떻게 해결할 수 있습니까?
시도 :
string query = [email protected]"
DELETE FROM MyTable WHERE [Name] = '{name}'
INSERT INTO MyTable ([Name], ...)
OUTPUT INSERTED.ID
VALUES ('{name}', ...)";
short id = (short)context.ExecuteQuery<int>(query).Single();
와 나는 오류
System.InvalidCastException was unhandled by user code
HResult=-2147467262
Message=Specified cast is not valid.
Source=System.Data
StackTrace:
at System.Data.SqlClient.SqlBuffer.get_Int32()
at System.Data.SqlClient.SqlDataReader.GetInt32(Int32 i)
at Read_Int32(ObjectMaterializer`1)
at System.Data.Linq.SqlClient.ObjectReaderCompiler.ObjectReader`2.MoveNext()
at System.Linq.Enumerable.Single[TSource](IEnumerable`1 source)
내가 SCOPE_IDENTITY()
를 사용하여 시도와 같은 일이 일어났다을 얻을.
쿼리가 유효합니까? '@'를 사용하기 때문에,'query' 문자열은 새로운 라인으로 시작합니다. 같은 줄에 문자열을 시작하여 제거 할 수 있습니다 :'string query = $ @ "MyTable WHERE [Name] = '{name}'..."'에서 삭제하십시오. – Quantic
@Quantic은 중요하지 않아야합니다. – Hogan
빈 목록에서 싱글이 실패합니다.'FirstOrDefault()'를 시도해보고 도움이되는지 확인하십시오. – Hogan