Исключение при передаче строки в DocumentHelper.GetDocuments (). Где () - PullRequest
0 голосов
/ 30 января 2019

Я пытаюсь получить такие узлы, как это:

DocumentHelper.GetDocuments()
.Where("NodeParentID == 25 && NodeLevel == 2")

, но получаю исключение:

Неверный синтаксис рядом с '='.в System.Data.SqlClient.SqlConnection.OnError (исключение SqlException, логическое прерывание соединения, завершение действия 1 wrapCloseInAction) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData() at System.Data.SqlClient.SqlDataReader.get_MetaData() at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted) at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource 1, тайм-аут Int32, задание и задача, логическое значение & usedCache, логическое значение asyncWrite, логическое значение inRetry) в System.Data.SqlClimand.unserCommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, метод String) в System.Data.SqlClient.SqlCommand.ExecuteReader (поведение CommandBehavior, метод String) в System.Data.Common.DbDataAdapter.FableTatattDataTatatTaseTataTataTaseTataTaseTataTaseTataTaseTataTaseTataTaseTataTaseTataTaseTataTaseTataTaseTataTaseTataTaseTataTaseTataTataTaseTataTataTaseTataTaseTaseTextTatt), Int32 maxRecords, String srcTable, команда IDbCommand, поведение CommandBehavior) в System.Data.Common.DbDataAdapter.Fill (DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, команда IDbCommand, поведение CommandBehavataDapbata.Dapmon.apmon.apmon.apmon.data.mon_data.Dapmon.apmon.data.mon_data.mon_data.mon.dll) в System.Data..Fill (DataSet dataSet) в CMS.DataEngine.AbstractDataConnection.ExecuteQuery (String queryText, QueryDataParameters queryParams, QueryTypeEnum queryType, логическое значение requireTransac)) Конец внутренней трассировки стека исключений ---
в CMS.DataEngine.AbstractDataConnection.HandleError (String queryText, Exception ex) в CMS.DataEngine.AbstractDataConnection.ExecuteQuery (String queryText, QueryDataParameters queryParamsE, Queryms QueryЛогическое значение requireTransaction) в CMS.DataEngine.GeneralConnection.RunQuery (запрос QueryParameters) в CMS.DataEngine.GeneralConnection.RunQueryWithRetry (запрос QueryParameters, Int32 retryCount) в CMS.DataEngine.GeryralEgneryEQueryQuctiveSecurity.ExuctionCecurity.ExenerationCequenSecurity.ExuctionCountDataQueryBase 1.GetDataFromDBInternal() at CMS.DataEngine.DataQueryBase 1.GetDataFromDB () в CMS.DataEngine.DataQueryBase 1.GetData() at CMS.DataEngine.DataQueryBase 1.get_Result () в CMS.DataEngine.DataQueryBase 1.GetResults(IDataQuery query, Int32& totalRecords) at CMS.DataEngine.DataQueryBase 1.GetDataFromDB ()
в CMS.DocumentEngine.DternalmentDetзапрос, Func 1 baseGetDataMethod, Action 1 setTotalRecords) в CMS.DataEngine.DataQueryBase 1.GetData() at CMS.DataEngine.DataQueryBase 1.get_Result () в CMS.DataEngine.MultiObjectQueryBase 3.EnsureTypedResult() at CMS.DataEngine.MultiObjectQueryBase 3.GetEnumerator () в System.Collections.Generic.List 1..ctor(IEnumerable 1 colleon)
в System.Linq.Enumerable.ToList [TSource] (источник IEnumerable`1)

Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 30 января 2019

Ваш синтаксис SQL неверен в предложении WHERE.Вы пытаетесь использовать синтаксис C # там, где вам нужно использовать T-SQL

Неправильно:

DocumentHelper.GetDocuments().Where("NodeParentID == 25 && NodeLevel == 2");

Правильно:

DocumentHelper.GetDocuments().Where("NodeParentID = 25 AND NodeLevel = 2");
0 голосов
/ 30 января 2019

== - это синтаксис ac #, SQL использует только один =.

Вы должны выполнить свои условия, например:

 .Where("NodeParentID", QueryOperator.Equals, 25)        
    .Where("NodeLevel ", QueryOperator.Equals, 7);
...