При загрузке данных из БД возникает исключение InvalidOperationException с сообщением: Элемент коллекции должен быть пустым перед использованием ItemsSource. Знаю, что для заполнения DataGrid можно использовать коллекции Items или ItemsSource, но одновременно их использовать нельзя: если задано значение для свойства ItemsSource и в коде C# добавляется элемент в Items, возникает исключение. |
Разработка приложения на базе WPF
Задание 3. Создать EDM-модель данных – 1 час.
Для создания EDM-модели данных необходимо добавить в проект новый элемент – модель ADO.NET EDM, присвоив файлу модели имя с соответствии с заданием, в рассматриваемом примере модель имеет имя TitleEmployee.edmx ( рис. 6.12).
В мастере создания EDM-модели выберем опцию "Создать из базы данных" ( рис. 6.13). Для создания соединения с базой данных в окне "Выбор подключения к данным" укажем соединение с базой данных (имя_сервера.имя_базы данных, в рассматриваемом примере – алексей-пк.TitlePerson) и зададим имя модели данных - TitlePersonEntities ( рис. 6.14).
В окне "Выбор объектов базы данных" отметим необходимые для приложения таблицы (в нашем случае это таблицы Employee и Title ) и флаг формирования объектов в единственном или множественном числе ( рис. 6.15).
При завершении работы мастера создания EDM-модели в проект будет добавлен файл (в рассматриваемом примере TitleEmployee.edmx - рис. 6.16), ссыки на необходимые библиотеки и конфигурационный файл.
Автоматически сгенерированный класс TitlePresonalEntities, который наследуется от класса ObjectContext, представляет сущности базы данных TitlePerson, содержит свойства, моделирующие таблицы Employee и Title, связи между таблицами.
При создании модели данных в проекте автоматически был сгенерирован конфигурационный файл App.Config, который содержит строку соединения с базой данных.
<?xml version="1.0" encoding="utf-8"?> <configuration> <connectionStrings> <add name="TitlePresonalEntities" connectionString="metadata=res://*/TitlePersonal.csdl|res://*/TitlePersonal.ssdl|res://* /TitlePersonal.msl;provider=System.Data.SqlClient;provider connection string="Data Source=АЛЕКСЕЙ-ПК; Initial Catalog=TitlePresonal;Integrated Security=True;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" /> </connectionStrings> </configuration>