Запросы к сущностям и ассоциациям



В этом упражнении создаются строго типизированные запросы к объектам среды 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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!