Помогите вставить новую строку в БД, используя linq - PullRequest
0 голосов
/ 03 декабря 2010

Вот фрагмент моего кода:

else
    {
        SubCategory subCat = new SubCategory
        {
            SubCategoryName = name,
            Active = false,
            CategoryID=Convert.ToInt32(ddlCategory.SelectedValue)
        };
        db.SubCategories.InsertOnSubmit(subCat);
    }

    db.SubmitChanges();

Следующая строка вызывает ошибку:

CategoryID=Convert.ToInt32(ddlCategory.SelectedValue)

Я подтвердил, что SelectedValue в моем DDL является int,и что база данных ожидает int, поэтому я не понимаю, почему asp.net дает мне YSOD, говорящий «Входная строка была не в правильном формате.»

Если я назначаю CategoryID номер вручную, этоработает.

РЕДАКТИРОВАТЬ: Проблема была в том, что я заполнял выпадающий список в моем коде позади, и я не заключил его в (! IsPostBack).Таким образом, он уничтожал список, заново заполнял его и устанавливал индекс в 0 каждый раз при обратной записи.

Ответы [ 4 ]

0 голосов
/ 03 декабря 2010

является внешним ключом categoryID для другой таблицы?если да, то попробуйте вытащить объект Category, а затем назначить его subCat.Category и посмотреть, работает ли он (отношение должно быть установлено в конструкторе DBML)

И последнее: когда именно он выдает исключение

0 голосов
/ 03 декабря 2010

Может быть попробовать

Int.Parse(ddlCategory.SelectedValue);

0 голосов
/ 03 декабря 2010

так что попробуйте тогда

else
    {
        int cat = Convert.ToInt32(ddlCategory.SelectedValue);
        SubCategory subCat = new SubCategory
        {
            SubCategoryName = name,
            Active = false,
            CategoryID = cat
        };
        db.SubCategories.InsertOnSubmit(subCat);
    }
0 голосов
/ 03 декабря 2010

Откуда берется ddlCategory? Какое значение ddlCategory.SelectedValue? Когда это запустится? Очевидно, что в данный момент это недопустимая целочисленная строка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...