IEditableCollectionView.AddNew () Бросая ArgumentNullException - PullRequest
0 голосов
/ 08 июня 2010

В контексте Silverlight RIA с использованием DomainContext и, код выглядит следующим образом:

    private void AddProductButton_Click(object sender, RoutedEventArgs e)
    {
        var target = (Web.LocatorProduct)((IEditableCollectionView)ProductSource.DataView).AddNew();
        target.Locator = LocatorID;
        target.Product = NewProduct.Text.ToUpper();

        ((IEditableCollectionView)ProductSource.DataView).CommitNew();
    }

Выдает исключение ArgumentNullException в AddNew (), CreateIdentity () далее вверх по стеку (сгенерированный метод) из-за того, что product имеет значение null. Product и LocatorID являются, в сочетании, первичным ключом.

Я предполагаю, что EF не позволяет мне создавать новый элемент без соблюдения ограничений базы данных? Как это имеет смысл, если мне нужно получить первичный ключ от пользователя?

У меня есть контроль над всеми уровнями приложения, поэтому при необходимости также приветствуются предложения по проектированию базы данных.

1 Ответ

0 голосов
/ 08 июня 2010

Хорошо, проблема решена. Я использовал этот интерфейс по той причине, что я прочитал об этом на форуме. Мне не удалось осознать, что я так же легко могу использовать DataView без приведения интерфейса для достижения результата, а DataView - это (возможно, временное) представление о том, как будут выглядеть ваши данные после фиксации, а более конкретно, как они выглядят буквально на визуальном контроле. Изменение кода выглядит следующим образом:

        var target = new Web.LocatorProduct()
        {
            Locator = LocatorID,
            Product = NewProduct.Text.ToUpper()
        };

        ProductSource.DataView.Add(target);

Очень просто.

...