Лекция 5 Раздел 5.1 Windows Phone Темы раздела 3.

Презентация:



Advertisements
Похожие презентации
Фрагмент карты градостроительного зонирования территории города Новосибирска Масштаб 1 : 4500 к решению Совета депутатов города Новосибирска от
Advertisements

Масштаб 1 : Приложение 1 к решению Совета депутатов города Новосибирска от _____________ ______.
Таблица умножения на 8. Разработан: Бычкуновой О.В. г.Красноярск год.
Масштаб 1 : Приложение 1 к решению Совета депутатов города Новосибирска от
ЦИФРЫ ОДИН 11 ДВА 2 ТРИ 3 ЧЕТЫРЕ 4 ПЯТЬ 5 ШЕСТЬ 6.
27 апреля группадисциплина% ДЕ 1МП-12Английский язык57 2МП-34Экономика92 3МП-39Психология и педагогика55 4МП-39Электротехника и электроника82 5П-21Информатика.
Лекция 2 Раздел 2.1 Windows Phone Темы раздела 3.
27 апреля группадисциплина% ДЕ 1МП-12Английский язык57 2МП-34Экономика92 3МП-39Психология и педагогика55 4МП-39Электротехника и электроника82 5П-21Информатика.
Работа учащегося 7Б класса Толгского Андрея. Каждое натуральное число, больше единицы, делится, по крайней мере, на два числа: на 1 и на само себя. Если.
Фрагмент карты градостроительного зонирования территории города Новосибирска Масштаб 1 : 6000 Приложение 7 к решению Совета депутатов города Новосибирска.
1 Знаток математики Тренажер Таблица умножения 2 класс Школа 21 века ®м®м.

Результаты работы 5а класса Кл. руководитель: Белобородова Н. С. Показатель 0123 Обучаемость 1-6%4-25%8-50%3-18 Навыки смыслового чтения 1-6%12-75%3-18%
Ул.Школьная Схема с. Вознесенка Ярославского городского поселения п.Ярославский 10 2 Ул.Флюоритовая
Матемтааки ЕТ СТ 2 класс Шипилова Наталия Викторовна учитель начальных классов, ВКК Шипилова Наталия Викторовна учитель начальных классов, ВКК.
27 апреля группадисциплина% ДЕ 1МП-12Английский язык57 2МП-34Экономика92 3МП-39Психология и педагогика55 4МП-39Электротехника и электроника82 5П-21Информатика.
1. Определить последовательность проезда перекрестка

Результаты сбора и обработки баз данных неработающего населения муниципальных общеобразовательных учреждений города Краснодара за период с 02 по 10 февраля.
Д. Дуброво д. Бортниково с. Никульское д. Подлужье д. Бакунино пос. Радужный - Песчаный карьер ООО ССП «Черкизово» - Граница сельского поселения - Граница.
Транксрипт:

Лекция 5

Раздел 5.1

Windows Phone Темы раздела 3

Windows Phone Изолированное хранилище 4

Windows Phone Программа для заметок 5

Windows Phone Поведение кнопки «сохранить» private void saveButton_Click(object sender, RoutedEventArgs e) { saveText("notes.txt", jotTextBox.Text); } 6

Windows Phone Метод saveText private void saveText(string filename, string text) { using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication()) { using (IsolatedStorageFileStream rawStream = isf.CreateFile(filename)) { StreamWriter writer = new StreamWriter(rawStream); writer.Write(text); writer.Close(); } } } 7

Windows Phone Класс IsolatedStorageFile private void saveText(string filename, string text) { using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication()) { using (IsolatedStorageFileStream rawStream = isf.CreateFile(filename)) { StreamWriter writer = new StreamWriter(rawStream); writer.Write(text); writer.Close(); } } } 8

Windows Phone Создание файла private void saveText(string filename, string text) { using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication()) { using (IsolatedStorageFileStream rawStream = isf.CreateFile(filename)) { StreamWriter writer = new StreamWriter(rawStream); writer.Write(text); writer.Close(); } } } 9

Windows Phone Запись данных в файл private void saveText(string filename, string text) { using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication()) { using (IsolatedStorageFileStream rawStream = isf.CreateFile(filename)) { StreamWriter writer = new StreamWriter(rawStream); writer.Write(text); writer.Close(); } } } 10

Windows Phone Поведение кнопки «загрузить» private void loadButton_Click(object sender, RoutedEventArgs e) { string text; if ( loadText("notes.txt", out text ) ) { notesTextBox.Text = text; } else { notesTextBox.Text = "Напишите здесь что-нибудь...."; } } 11

Windows Phone Загрузка данных из хранилища try { using (IsolatedStorageFileStream rawStream = isf.OpenFile(filename, System.IO.FileMode.Open)) { StreamReader reader = new StreamReader(rawStream); result = reader.ReadToEnd(); reader.Close(); } } catch { return false; } 12

Windows Phone Хранилище для файлов 13

Windows Phone Хранение настроек приложения 14

Windows Phone Словари для хранения настроек 15

Windows Phone Сохранение настроек private void saveText(string filename, string text) { IsolatedStorageSettings isolatedStore = IsolatedStorageSettings.ApplicationSettings; isolatedStore.Remove(filename); isolatedStore.Add(filename, text); isolatedStore.Save(); } 16

Windows Phone Сохранение данных 17

Windows Phone Чтение данных из хранилища 18

Windows Phone Загрузка данных из хранилища private bool loadText(string filename, out string result) { IsolatedStorageSettings isolatedStore = IsolatedStorageSettings.ApplicationSettings; result = ""; try { result = (string)isolatedStore[filename]; } catch { return false; } return true; } 19

Windows Phone Управление загрузкой 20 result = ""; try { result = (string) isolatedStore[filename]; } catch { return false; }

Windows Phone Краткие итоги 21

Раздел 5.2

Windows Phone Темы раздела 23

Windows Phone Пример создания базы данных 24

Windows Phone Таблица Customers 25 CustomerIDNameAddressBankDetails Rob18 Pussycat MewsNut East Bank Jim10 Motor DriveBig Fall Bank Ethel4 Funny AddressStrange bank

Windows Phone Таблицы Products и Orders 26 OrderIDCustomerIDProductIDQuantityOrderDateStatus /10/2010Shipped /10/2010Shipped /09/2010On order ProductIDProductNameSupplierPrice 1001Windows Phone 7Microsoft Cheese graterCheese Industries2 1003Boat hookJohns Dockyard20

Windows Phone Базы данных и программы 27

Windows Phone Базы данных и классы 28 public class Customer { public int ID { get; set; } public string Name { get; set; } public string Address { get; set; } public string BankDetails { get; set; } }

Windows Phone Технология LINQ 29

Windows Phone Пространства имён LINQ 30 using System.Linq; using System.Data.Linq; using System.Data.Linq.Mapping; using System.ComponentModel; using System.Collections.ObjectModel;

Windows Phone Создание таблицы Customers 31

Windows Phone Атрибут Table 32 [Table] public class Customer : INotifyPropertyChanged, INotifyPropertyChanging { // здесь описывается структура класса }

Windows Phone События изменения данных 33 [Table] public class Customer : INotifyPropertyChanged, INotifyPropertyChanging { // здесь описывается структура класса }

Windows Phone Секции get и set в свойствах 34 private string nameValue; public string Name { get { return nameValue; } set { // код секции set } }

Windows Phone Код секции set 35 set { if (PropertyChanging != null) { PropertyChanging(this, new PropertyChangingEventArgs("Name")); } nameValue = value; If (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs("Name")); } }

Windows Phone Создание столбцов 36 [Column] public string Name { // здесь описывается код свойства Name }

Windows Phone Первичный ключ 37

Windows Phone Первичный ключ 38 [Column(IsPrimaryKey = true, IsDbGenerated = true)] public int CustomerID { get; set; }

Windows Phone Контекст данных LINQ 39

Windows Phone Создание класса SalesDB 40 public class SalesDB : DataContext { public Table Customers; public SalesDB(string connection) : base(connection) { } }

Windows Phone Строка подключения 41

Windows Phone Создание тестовой базы данных 42 public static void MakeTestDB(string connection) { SalesDB newDB = new SalesDB(connection); if (newDB.DatabaseExists()) { newDB.DeleteDatabase(); } // записать необходимые данные newDB.SubmitChanges(); }

Windows Phone Создание тестовых данных 43 string[] firstNames = new string[] { "Rob", "Jim", "Joe", "Nigel", "Sally", "Tim" }; string[] lastsNames = new string[] { "Smith", "Jones", "Bloggs", "Miles", "Wilkinson" }; foreach (string lastName in lastsNames) { foreach (string firstname in firstNames) { // создание записи о клиенте }

Windows Phone Создание записи о клиенте 44 // создание записи о клиенте string name = firstname + " " + lastName; string address = name + "'s address"; string bank = name + "'s bank"; Customer newCustomer = new Customer(); newCustomer.Name = name; newCustomer.Address = address; newCustomer.BankDetails = bank; newDB.CustomerTable.InsertOnSubmit(newCustomer);

Windows Phone Переменные базы данных 45 #region Sales Manager variables public SalesDB ActiveDB; public Customer ActiveCustomer; #endregion

Windows Phone Настройка приложения 46 public App() { // создание тестовой базы данных SalesDB.MakeTestDB( "Data Source=isostore:/Sample.sdf"); // подключение к базе данных ActiveDB = new SalesDB( "Data Source=isostore:/Sample.sdf"); }

Windows Phone Создание запроса LINQ 47 var customers = from Customer customer in thisApp.ActiveDB.CustomerTable select customer;

Windows Phone Создание запроса LINQ 48 var customers = from Customer customer in thisApp.ActiveDB.CustomerTable select customer;

Windows Phone Вывод результатов на экран 49 customerList.ItemsSource = customers;

Windows Phone Добавление условий выборки 50 var customers = from Customer customer in thisApp.ActiveDB.CustomerTable where customer.Name.StartsWith("S") select customer;

Windows Phone Краткие итоги 51

Раздел 5.3

Windows Phone Темы раздела 53

Windows Phone Структура базы данных 54 Order IDCustomerIDProductIDQuantityOrderDateStatus /10/2010Shipped /10/2010Shipped /09/2010On order ProductIDProductNameSupplierPrice 1001Windows Phone 7Microsoft Cheese graterCheese Industries2 1003Boat hookJohns Dockyard20 CustomerIDNameAddressBankDetails Rob18 Pussycat MewsNut East Bank Jim10 Motor DriveBig Fall Bank Ethel4 Funny AddressStrange bank

Windows Phone Создание связей в классах 55 public class Order { public DateTime OrderDate; public int Quantity; public Customer OrderCustomer; public Product OrderProduct; }

Windows Phone Связь строк таблиц 56 Order IDCustomer IDProduct IDQuantityOrder DateStatus /10/2010Shipped /10/2010Shipped /09/2010On order Product IDProduct NameSupplierPrice 1001Windows Phone 7Microsoft Cheese graterCheese Industries2 1003Boat hookJohns Dockyard20 Customer IDNameAddressBank Details Rob18 Pussycat MewsNut East Bank Jim10 Motor DriveBig Fall Bank Ethel4 Funny AddressStrange bank

Windows Phone Связи по первичному ключу 57 Order IDCustomer IDProduct IDQuantityOrder DateStatus /10/2010Shipped /10/2010Shipped /09/2010On order Product IDProduct NameSupplierPrice 1001Windows Phone 7Microsoft Cheese graterCheese Industries2 1003Boat hookJohns Dockyard20 Customer IDNameAddressBank Details Rob18 Pussycat MewsNut East Bank Jim10 Motor DriveBig Fall Bank Ethel4 Funny AddressStrange bank

Windows Phone Внешние ключи 58

Windows Phone Класс EntityRef 59 private EntityRef orderCustomer; [Association(IsForeignKey = true, Storage = "orderCustomer")] public Customer OrderCustomer { get { return orderCustomer.Entity; } set { orderCustomer.Entity = value; } }

Windows Phone Класс EntityRef 60 private EntityRef orderCustomer; [Association(IsForeignKey = true, Storage = "orderCustomer")] public Customer OrderCustomer { get { return orderCustomer.Entity; } set { orderCustomer.Entity = value; } }

Windows Phone Атрибут Association 61 private EntityRef orderCustomer; [Association(IsForeignKey = true, Storage = "orderCustomer")] public Customer OrderCustomer { get { return orderCustomer.Entity; } set { orderCustomer.Entity = value; } }

Windows Phone Атрибут Association 62 private EntityRef orderCustomer; [Association(IsForeignKey = true, Storage = "orderCustomer")] public Customer OrderCustomer { get { return orderCustomer.Entity; } set { orderCustomer.Entity = value; } }

Windows Phone Атрибут Association 63 private EntityRef orderCustomer; [Association(IsForeignKey = true, Storage = "orderCustomer")] public Customer OrderCustomer { get { return orderCustomer.Entity; } set { orderCustomer.Entity = value; } }

Windows Phone Ссылка на экземпляр класса 64 private EntityRef orderCustomer; [Association(IsForeignKey = true, Storage = "orderCustomer")] public Customer OrderCustomer { get { return orderCustomer.Entity; } set { orderCustomer.Entity = value; } }

Windows Phone События изменения данных 65 NotifyPropertyChanging("OrderCustomer"); orderCustomer.Entity = value; NotifyPropertyChanged("OrderCustomer");

Windows Phone Использование ссылки EntityRef 66 Customer newCustomer = new Customer(); Order newOrder = new Order(); newOrder.OrderCustomer = newCustomer;

Windows Phone Связывание клиента с заказами 67

Windows Phone Класс EntitySet 68 private EntitySet orders = new EntitySet (); [Association(Storage="orders", ThisKey="CustomerID", OtherKey="OrderCustomerID")] public EntitySet Orders { get { return orders; } set { orders = value; } }

Windows Phone Класс EntitySet 69 private EntitySet orders = new EntitySet (); [Association(Storage="orders", ThisKey="CustomerID", OtherKey="OrderCustomerID")] public EntitySet Orders { get { return orders; } set { orders = value; } }

Windows Phone Атрибут Association 70 private EntitySet orders = new EntitySet (); [Association(Storage="orders", ThisKey="CustomerID", OtherKey="OrderCustomerID")] public EntitySet Orders { get { return orders; } set { orders = value; } }

Windows Phone Атрибут Association 71 private EntitySet orders = new EntitySet (); [Association(Storage="orders", ThisKey="CustomerID", OtherKey="OrderCustomerID")] public EntitySet Orders { get { return orders; } set { orders = value; } }

Windows Phone Атрибут Association 72 private EntitySet orders = new EntitySet (); [Association(Storage="orders", ThisKey="CustomerID", OtherKey="OrderCustomerID")] public EntitySet Orders { get { return orders; } set { orders = value; } }

Windows Phone Настройка связанных классов 73

Windows Phone Хранение ссылок 74 [Column] public int OrderCustomerID; private EntityRef orderCustomer = new EntityRef ();

Windows Phone Описание ассоциации 75 [Association(IsForeignKey = true, Storage = "orderCustomer", ThisKey = "OrderCustomerID")]

Windows Phone Описание ассоциации 76 [Association(IsForeignKey = true, Storage = "orderCustomer", ThisKey = "OrderCustomerID")]

Windows Phone Описание ассоциации 77 [Association(IsForeignKey = true, Storage = "orderCustomer", ThisKey = "OrderCustomerID")]

Windows Phone Ассоциация в классе Order 78 public Customer OrderCustomer { get { return orderCustomer.Entity; } set { orderCustomer.Entity = value; if (value != null) OrderCustomerID = value.CustomerID; } }

Windows Phone Уведомления LINQ 79 set { NotifyPropertyChanging("OrderCustomer"); orderCustomer.Entity = value; NotifyPropertyChanged("OrderCustomer"); if (value != null) OrderCustomerID = value.CustomerID; }

Windows Phone Использование класса EntityRow 80 Customer newCustomer = new Customer(); Order newOrder = new Order(); newOrder.OrderCustomer = newCustomer; newCustomer.Orders.Add(newOrder);

Windows Phone LINQ и классы 81 foreach (Order o in activeCustomer.Orders) { // выполнить действия с заказом }

Windows Phone Проектирование базы данных 82

Windows Phone Добавление таблицы OrderItem 83 OrderItemIDOrderIDProductIDQuantity

Windows Phone Полная структура базы данных 84

Windows Phone Запросы LINQ 85

Windows Phone Простой запрос к базе данных 86 DateTime searchDate = new DateTime(2011,8,19); var orders = from Order order in activeDB.OrderTable where order.OrderDate == searchDate select order;

Windows Phone Обработка результатов запроса 87 int totalSales = 0; foreach (Order order in orders) { foreach (OrderItem item in order.OrderItems) { totalSales += item.OrderItemProduct.Price; } }

Windows Phone Результаты запроса LINQ 88

Windows Phone Кэширование результатов 89 List DateOrders = orders.ToList ();

Windows Phone Объединение запросов 90

Windows Phone Ключевое слово join 91 var allOrders = from Customer c in newDB.CustomerTable join Order o in newDB.OrderTable on c.CustomerID equals o.OrderCustomerID select new { c.Name, o.OrderDescription };

Windows Phone Использование результатов 92 List OrderDescriptions = new List (); foreach (var orderDesc in allOrders) { OrderDescriptions.Add(orderDesc.Name + " заказал: " + orderDesc.OrderDescription); }

Windows Phone Создание нового класса 93 var allOrders = from Customer c in newDB.CustomerTable join Order o in newDB.OrderTable on c.CustomerID equals o.OrderCustomerID select new { c.Name, o.OrderDescription };

Windows Phone Удаление элементов из таблицы 94 ActiveDB.OrderItemTable.DeleteOnSubmit(item);

Windows Phone Удаление связанных объектов 95

Windows Phone Краткие итоги 96