Запросы к сущностям и ассоциациям
В этом упражнении создаются строго типизированные запросы к объектам среды CLR, которые представляют сущности и ассоциации в модели School, а элементы управления отображением привязываются к коллекциям объектов, возвращаемым этими запросами.
Будут созданы запросы, возвращающие объекты Department и Course и связывающие эти объекты с элементами управления.
Запрос по отделам в базе данных School
1. В файле с кодом для формы CourseViewer добавьте директиву using (C#), чтобы сослаться на модель, созданную из базы данных School, и пространство имен сущностей.
using System.Data.Objects;
using System.Data.Objects.DataClasses;
2. В начале определения класса для формы CourseViewer добавьте следующий код, создающий экземпляр ObjectContext:
private SchoolEntities schoolContext;
3. Добавьте обработчик события загрузки формы courseViewer _Load и реализуйте следующую функциональность:
A. Инициализируйте экземпляр ObjectContext :
schoolContext = new SchoolEntities();
b. Выполните запрос, возвращающий коллекцию отделов (упорядоченную по параметру Name):
var departmentQuery = from d in schoolContext.Departments.Include("Courses")
orderby d.Name
select d;
c. Инициализируйте представление списка в списке departmentList и привяжите коллекцию объектов Department к элементу управления departmentList:
try
{
this.departmentList.DisplayMember = "Name";
this.departmentList.DataSource = ((ObjectQuery)departmentQuery).Execute(MergeOption.AppendOnly);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
Отображение курсов для выбранного отдела
|
|
4. В конструкторе формы CourseViewer дважды щелкните элемент управления departmentList. Будет создан метод обработчика события departmentList_SelectedIndexChanged.
5. Вставьте следующий код, загружающий курсы, связанные с выбранным отделом:
try
{
Department department = (Department)this.departmentList.SelectedItem;
courseGridView.DataSource = department.Courses;
courseGridView.Columns["Department"].Visible = false;
courseGridView.Columns["StudentGrades"].Visible = false;
courseGridView.Columns["OnlineCourse"].Visible = false;
courseGridView.Columns["OnsiteCourse"].Visible = false;
courseGridView.Columns["People"].Visible = false;
courseGridView.Columns["DepartmentId"].Visible = false;
courseGridView.AllowUserToDeleteRows = false;
courseGridView.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
Вставка и обновление данных
В этом упражнении в базе данных будут сохранены изменения, внесенные в объекты Course, привязанные к элементу управления DataGridView.
1. Перенесите кнопку на форму, измените свойство (Name) этого элемента управления на saveChanges, а значение свойства Text — на Обновить.
2. Добавьте обработчик события saveChanges_Click и вставьте код, сохраняющий изменения объекта в базе данных:
try
{
schoolContext.SaveChanges();
MessageBox.Show("Changes saved to the database.");
this.Refresh();
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
3. Добавьте обработчик события closeForm_Click и введите код для удаления контента объекта и закрытия формы:
|
|
this.Close();
schoolContext.Dispose();
4. Постройте и протестируйте работу приложения.
5. После загрузки формы выберите отдел в элементе управления ComboBox, просмотрите сетку, должны отображаться курсы, принадлежащие данному отделу.
6. В сетке добавьте новый курс и нажмите кнопку Обновить. Убедитесь, что отображается окно сообщения с уведомлением о сохранении изменений. Повторно запустите приложение и убедитесь, что изменения сохраняются в базе данных.
Литература
1. Шилд Г. C# 4.0 Полное руководство. – М.: Вильямс, 2011. – 1056с.
2. Малик С. Microsoft ADO.NET 2.0 для профессионалов.: пер. с англ. — М.: Вильямс, 2006 – 560 с.
3. Уотсон К. и др. Visual C# 2010. Полный курс. – М.: Диалектика, 2010. – 960с.
4. Троелсен Э. Язык программирования C# 2010 и платформа .NET 4.0 Framework. – М.: Вильямс, 2010. – 1392 с.
Дата добавления: 2019-02-26; просмотров: 173; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!