Опубликован: 08.07.2011 | Доступ: свободный | Студентов: 1772 / 93 | Оценка: 4.15 / 4.08 | Длительность: 15:28:00
Самостоятельная работа 1:

Разработка приложения на базе WPF

< Лекция 5 || Самостоятельная работа 1: 12345 || Лекция 6 >

Задание 3. Создать EDM-модель данных – 1 час.

Для создания EDM-модели данных необходимо добавить в проект новый элемент – модель ADO.NET EDM, присвоив файлу модели имя с соответствии с заданием, в рассматриваемом примере модель имеет имя TitleEmployee.edmx ( рис. 6.12).

Добавление в проект модели EDM

увеличить изображение
Рис. 6.12. Добавление в проект модели EDM

В мастере создания EDM-модели выберем опцию "Создать из базы данных" ( рис. 6.13). Для создания соединения с базой данных в окне "Выбор подключения к данным" укажем соединение с базой данных (имя_сервера.имя_базы данных, в рассматриваемом примере – алексей-пк.TitlePerson) и зададим имя модели данных - TitlePersonEntities ( рис. 6.14).

Создание модели EDM из базы данных

увеличить изображение
Рис. 6.13. Создание модели EDM из базы данных
Создание соединения с базой данных

увеличить изображение
Рис. 6.14. Создание соединения с базой данных

В окне "Выбор объектов базы данных" отметим необходимые для приложения таблицы (в нашем случае это таблицы Employee и Title ) и флаг формирования объектов в единственном или множественном числе ( рис. 6.15).

Выбор таблиц базы данных

увеличить изображение
Рис. 6.15. Выбор таблиц базы данных

При завершении работы мастера создания EDM-модели в проект будет добавлен файл (в рассматриваемом примере TitleEmployee.edmx - рис. 6.16), ссыки на необходимые библиотеки и конфигурационный файл.

Выбор таблиц базы данных

увеличить изображение
Рис. 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>
< Лекция 5 || Самостоятельная работа 1: 12345 || Лекция 6 >
Александр Петров
Александр Петров

При загрузке данных из БД возникает исключение InvalidOperationException с сообщением: Элемент коллекции должен быть пустым перед использованием ItemsSource. Знаю, что для заполнения DataGrid можно использовать коллекции Items или ItemsSource, но одновременно их использовать нельзя: если задано значение для свойства ItemsSource и в коде C# добавляется элемент в Items, возникает исключение. 
Вопрос, как отследить и отключить добавление элемента в Items?

Максим Спиридонов
Максим Спиридонов

В пятой лекции на второй странице в компиляторе выскакивает ошибка в строчке :

ObjectQuery<Employee> employees = DataEntitiesEmployee.Employees;

Ошибка CS0029

Не удается неявно преобразовать тип "System.Data.Entity.DbSet<WpfApplProject.Employee>" в "System.Data.Entity.Core.Objects.ObjectQuery<WpfApplProject.Employee>".

в using прописал все как положено, здесь похоже именно с преобразованием типов проблемы