Что инициировало ConstraintException при загрузке DataSet?

Расширения, которые предоставляют intellisense, могут определять «символы фиксации», которые принимают текущее предложение при вводе. Поддержка JS и TS кода VS Code помечает . как символ фиксации для всех предложений, а также рассматривает ( как символ фиксации для предложений функций / методов.

Чтобы предотвратить это, нажмите esc, чтобы выйти из диалогового окна с предложением, прежде чем вводить (, или установите :

"editor.acceptSuggestionOnCommitCharacter": false

, чтобы полностью отключить символы фиксации. [ 118]

33
задан Dala 26 September 2008 в 15:18
поделиться

4 ответа

Существует свойство под названием RowError, который можно проверить.

Видят http://dotnetdebug.net/2006/07/16/constraintexception-a-helpful-tip/

Отредактированный для добавления этой ссылки, показывающей повторение строк для наблюдения, который имел ошибки.

http://www.devnewsgroups.net/group/microsoft.public.dotnet.framework.adonet/topic58812.aspx

11
ответ дан 27 November 2019 в 18:39
поделиться

Как многие люди, у меня есть свои собственные стандартные компоненты доступа к данным, которые включают методы для возврата DataSet. Конечно, если ConstraintException брошен, DataSet не возвращается вызывающей стороне, таким образом, вызывающая сторона не может проверить на ошибки строки.

то, Что я сделал, является выгодой и переброском ConstraintException в таких методах, регистрируя детали ошибки строки, как в следующем примере (который использует Log4Net для входа):

...
try
{
    adapter.Fill(dataTable); // or dataSet
}
catch (ConstraintException)
{
    LogErrors(dataTable);
    throw;
}
...

private static void LogErrors(DataSet dataSet)
{
    foreach (DataTable dataTable in dataSet.Tables)
    {
        LogErrors(dataTable);
    }
}

private static void LogErrors(DataTable dataTable)
{
    if (!dataTable.HasErrors) return;
    StringBuilder sb = new StringBuilder();
    sb.AppendFormat(
        CultureInfo.CurrentCulture,
        "ConstraintException while  filling {0}",
        dataTable.TableName);
    DataRow[] errorRows = dataTable.GetErrors();
    for (int i = 0; (i < MAX_ERRORS_TO_LOG) && (i < errorRows.Length); i++)
    {
        sb.AppendLine();
        sb.Append(errorRows[i].RowError);
    }
    _logger.Error(sb.ToString());
}
20
ответ дан 27 November 2019 в 18:39
поделиться

Я добавил некоторый код, который я нашел, чтобы быть полезным в отладке случаев ConstraintException здесь

Hope, которой это помогает.

1
ответ дан 27 November 2019 в 18:39
поделиться

Когда Вы используете сильный введенный набор данных и использовали визуального разработчика (xsd): к доступу tbl. Информация [0].RowError о строках, необходимо создать Заливка метод.

Вы не можете использовать Получение метод, так как DataTable инстанцируется в рамках сгенерированного кода.

3
ответ дан 27 November 2019 в 18:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: