В моей базе данных есть таблица под названием Impacts, и в ней есть два форж-ключа с именами cmpt_name и cmpt_reference из Component Table.

И я хочу добавить некоторые данные в ObservableCollection, который я создал с помощью таблицы Impact. Но я не могу добавить к нему cmpt_name и cmpt_reference?

public ObservableCollection<Impact> ModelListe { get; set; }

private Impact model;

public Project_Questions_Window()
{
    InitializeComponent();

    ModelListe = new ObservableCollection<Impact>();
    DataContext = this;
}

public void addData()
{
     model = new Impact();
     **model.Component.cmpt_name = comboBoxComponents.Text;**
     model.impt_name = textBoxQuestion.Text;
     **model.Component.cmpt_reference = comboBoxComponents.SelectedValuePath;**
     ModelListe.Add(model);
}

Я получаю сообщение об ошибке в выделенной строке:

Ссылка на объект, не установленная на экземпляр объекта.

Кто-нибудь может сказать мне, как это решить, пожалуйста? Я использую базу данных модели сущностей.

0
Gayashan 26 Мар 2013 в 11:17
Вы можете показать мне свой Impact class?
 – 
Karl_Schuhmann
26 Мар 2013 в 11:34

1 ответ

Лучший ответ

Когда вы создаете новый экземпляр Impact, я почти уверен, что он еще не содержит Component. Итак, model.Component здесь является нулевым объектом.

Я не знаю вашей бизнес-логики, но полагаю, что выходом будет выбор Component из базы данных и заполнение поля со списком этими уже существующими компонентами. Теперь, когда вы создаете новый Impact, вы не устанавливаете имя его компонента, а устанавливаете его свойство Compenent:

model.Component = comboBoxComponents.SelectedValue;
1
Gert Arnold 26 Мар 2013 в 14:40