Ошибка при программном создании "прямое подключение"

Пытаюсь программно реализовать добавление “прямое подключение” в жилом объекте так:

        public static async Task SetAndCreateCOMPollConnectionAsync();
        {
            try
            {
                Lers.Poll.PollPort[] pollPorts = await SERVER.PollPorts.GetListAsync();
                House house = GetHouseByTitle("Дом Б");
                house.Refresh(NodeInfoFlags.PollConnections);
                Lers.Poll.PollConnection pollConnection = house.PollConnections.CreateNew(Lers.Poll.CommunicationLink.Direct, "Test");
                // MOXA COM21
                pollConnection.PollPortId = 31;
                // Получаем список оборудования по номеру COM порта 
                pollConnection.SetEquipmentList(GetEquipmentList("21"));
                pollConnection.PortSpeed = 9600;
                pollConnection.FlowControl = FlowControl.None;                
                house.PollConnections.Add(pollConnection);                
                house.SaveAsync();
            }
            catch(Exception e);
            {
               // Log("Подключение оборудования в доме [" + house.Title + "] завершилось ошибкой!", 1);
                Log(e.Message, 2);
                Log(e.StackTrace, 3);
            }
        }

Выдает следующую ошибку при вызове метода house.SaveAsync()

Ошибка выполнения запроса “EDIT_NODE”. The INSERT statement conflicted with the CHECK constraint “CK_PollConnection_Direct”. The conflict occurred in database “LERS”, table “dbo.PollConnection”. (Имя входа: admin)

Делаю все тоже самое руками и оно работает.



Есть стойкое ощущение что делаю что то жутко не так :du_ma_et:

Отладка выдает следующее:

Ошибка выполнения операции #EDIT_NODE (EDIT_NODE) для сеанса работы #397.

  1. [.Net SqlClient Data Provider] System.Data.SqlClient.SqlException: The INSERT statement conflicted with the CHECK constraint “CK_PollConnection_ConnectionTimeout”. The conflict occurred in database “LERS”, table “dbo.PollConnection”.

Стек вызовов:
в System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action1 wrapCloseInAction) в System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) в System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) в System.Data.SqlClient.SqlDataReader.TryHasMoreRows(Boolean& moreRows) в System.Data.SqlClient.SqlDataReader.TryReadInternal(Boolean setTimeout, Boolean& more) в System.Data.SqlClient.SqlDataReader.Read() в System.Data.SqlClient.SqlCommand.CompleteExecuteScalar(SqlDataReader ds, Boolean returnSqlValue) в System.Data.SqlClient.SqlCommand.ExecuteScalar() в Lers.Dal.DbQuery.TryExecuteWithErrorHandling(ExecutionResultType resultType, CancellationToken cancellationToken) в Lers.SqlQuery.TryExecuteWithErrorHandling(ExecutionResultType resultType, CancellationToken cancellationToken) в Lers.Dal.DbQuery.ExecuteWithErrorHandling(ExecutionResultType resultType) в Lers.Dal.DbQuery.ExecuteScalar() в Lers.Dal.PollConnectionDataAccess.Create(PollConnection record) в Lers.Poll.PollConnectionManager.Create(PollConnection pollConnection) в Lers.Core.Node.SetPollConnections(IEnumerable1 connectionList, Boolean force)
в Lers.Core.NodeManager.SetNodeParameters(IAccount currentAccount, Node node, EditNodeRequestParameters param, List`1 updatedParameters, Boolean& needFireMeasurePointChanged)
в Lers.Core.NodeManager.ProcessRequestEdit(IAccount currentAccount, EditNodeRequestParameters param)
в Lers.RequestProcessor.ProcessRequest(ISession currentSession, Int32 operationId, Int32 requestId, PropertyBag requestData, CancellationToken cancellationToken)

Дополнительная информация (Data):
HelpLink.ProdName=Microsoft SQL Server
HelpLink.ProdVer=12.00.2000
HelpLink.EvtSrc=MSSQLServer
HelpLink.EvtID=547
HelpLink.BaseHelpUrl=> Bing
HelpLink.LinkId=20476
Query=sp_InsPollConnection @Title=‘Test’, @CommLinkType=1, @PollPortId=31, @PollPortGroupId=NULL, @CommDeviceEquipmentId=NULL, @CommDevicePortId=NULL, @CommDevicePortSettingsId=NULL, @ConnectionTimeout=4, @DialNumber=‘’, @CommLinkProtocol=0, @GprsCallType=0, @GprsAutoDisconnect=False, @InternetHost=‘’, @InternetPort=0, @ImitateModem=False, @PortSpeed=9600, @FlowControl=1
IsProcessingCanceled=False

Дополнительная информация из ExternalException:
HRESULT=0x80131904

Дополнительная информация из SqlException:
Message=The INSERT statement conflicted with the CHECK constraint “CK_PollConnection_ConnectionTimeout”. The conflict occurred in database “LERS”, table “dbo.PollConnection”.
Class=16
Number=547
State=0
Server=(local)LERS
Procedure=sp_InsPollConnection
LineNumber=24
Source=.Net SqlClient Data Provider


FlowControl.None это системное значение управления потоком с обозначением “Неизвестен”.
Управление потоком с обозначением “Отсутствует” это FlowControl.Off.

Ура. Разобрался. Спасибо за подсказку! Все отлично работает.

А что возвращает GetEquipmentList(“21”)? Вы уверены что данный метод возвращает непустой массив?

Да GetEquipmentList(“21”) возвращал пустой массив. (Я выбирал 21 порт не из той таблицы не из того дома в общем в котором этого порта нет :))) мой косяк.