Использование EntityDataSoruce и обнуляемый столбец. Как мне установить обновление столбца в моей БД на ноль? - PullRequest
0 голосов
/ 13 сентября 2010

Может ли кто-нибудь надежно получить EntityDataSource для сохранения обнуляемого столбца в базе данных как «ноль» при привязке к любому из элементов управления, например, «FormView»?

Я пытался использовать несколько различных UpdateParameters (SessionParameter, ControlParamater, Параметр и т. Д.).Я попытался установить "ConvertEmptyStringToNull" в true и оставить свойство полностью отключенным.Ничего не работаетНа моих «Вставках» он работает нормально (но, очевидно, чтобы вставить запись, он должен вставить «что-то», если нет значения.)

(я убедился, что для столбца установлено значение nullable = true вEntity Designer .....)

Я попытался привязать этот столбец к метке и установить текстовое значение метки в "".

Во всех этих случаях я могу успешно установить для столбца значение, но не NULL.

1 Ответ

1 голос
/ 09 февраля 2011

У меня похожая проблема.

Единственный найденный мной обходной путь - перезагрузить объект в событии ItemUpdated.Проверьте, является ли значение, которое я хотел установить на ноль, нулевым, и если это так, установите значение снова на ноль вручную.Вот так:

protected void FormView1_ItemUpdated(object sender, FormViewUpdatedEventArgs e)
    {
        // Use the Exception property to determine whether an exception
        // occurred during the insert operation.
        if (e.Exception != null)
        {
            // handle the exception
        }
        else
        {
            //force the suppression of the foreign key relation
            using (var context = new ProxiEntities())
            {
                //reload my object
                var id = Convert.ToInt32(e.Keys["SessionID"]);
                var session = (from o in context.Sessions
                               where o.SessionID == id
                               select o).FirstOrDefault();

                try
                {
                    //check if I wanted to set a value to null
                    if (e.NewValues["MagasinID"] == null)
                    {
                        //if yes, set it to null and save
                        session.MagasinID = null;
                    }
                    if (e.NewValues["LieuID"] == null)
                    {
                        session.LieuID = null;
                    }
                    context.SaveChanges();
                }
                catch (Exception)
                {
                    //Add code to log the error.
                }
            }
        }
    }

Это единственный способ, которым я мог бы найти способ решить эту проблему.Также это кажется необычной проблемой.Вы единственный, кого я смог найти.

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