Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 10 лет назад пользователемАлиса Шиндякова
1 Лекция 5
2 Раздел 5.1
3 Windows Phone Темы раздела 3
4 Windows Phone Изолированное хранилище 4
5 Windows Phone Программа для заметок 5
6 Windows Phone Поведение кнопки «сохранить» private void saveButton_Click(object sender, RoutedEventArgs e) { saveText("notes.txt", jotTextBox.Text); } 6
7 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
8 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
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(); } } } 9
10 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
11 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
12 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
13 Windows Phone Хранилище для файлов 13
14 Windows Phone Хранение настроек приложения 14
15 Windows Phone Словари для хранения настроек 15
16 Windows Phone Сохранение настроек private void saveText(string filename, string text) { IsolatedStorageSettings isolatedStore = IsolatedStorageSettings.ApplicationSettings; isolatedStore.Remove(filename); isolatedStore.Add(filename, text); isolatedStore.Save(); } 16
17 Windows Phone Сохранение данных 17
18 Windows Phone Чтение данных из хранилища 18
19 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
20 Windows Phone Управление загрузкой 20 result = ""; try { result = (string) isolatedStore[filename]; } catch { return false; }
21 Windows Phone Краткие итоги 21
22 Раздел 5.2
23 Windows Phone Темы раздела 23
24 Windows Phone Пример создания базы данных 24
25 Windows Phone Таблица Customers 25 CustomerIDNameAddressBankDetails Rob18 Pussycat MewsNut East Bank Jim10 Motor DriveBig Fall Bank Ethel4 Funny AddressStrange bank
26 Windows Phone Таблицы Products и Orders 26 OrderIDCustomerIDProductIDQuantityOrderDateStatus /10/2010Shipped /10/2010Shipped /09/2010On order ProductIDProductNameSupplierPrice 1001Windows Phone 7Microsoft Cheese graterCheese Industries2 1003Boat hookJohns Dockyard20
27 Windows Phone Базы данных и программы 27
28 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; } }
29 Windows Phone Технология LINQ 29
30 Windows Phone Пространства имён LINQ 30 using System.Linq; using System.Data.Linq; using System.Data.Linq.Mapping; using System.ComponentModel; using System.Collections.ObjectModel;
31 Windows Phone Создание таблицы Customers 31
32 Windows Phone Атрибут Table 32 [Table] public class Customer : INotifyPropertyChanged, INotifyPropertyChanging { // здесь описывается структура класса }
33 Windows Phone События изменения данных 33 [Table] public class Customer : INotifyPropertyChanged, INotifyPropertyChanging { // здесь описывается структура класса }
34 Windows Phone Секции get и set в свойствах 34 private string nameValue; public string Name { get { return nameValue; } set { // код секции set } }
35 Windows Phone Код секции set 35 set { if (PropertyChanging != null) { PropertyChanging(this, new PropertyChangingEventArgs("Name")); } nameValue = value; If (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs("Name")); } }
36 Windows Phone Создание столбцов 36 [Column] public string Name { // здесь описывается код свойства Name }
37 Windows Phone Первичный ключ 37
38 Windows Phone Первичный ключ 38 [Column(IsPrimaryKey = true, IsDbGenerated = true)] public int CustomerID { get; set; }
39 Windows Phone Контекст данных LINQ 39
40 Windows Phone Создание класса SalesDB 40 public class SalesDB : DataContext { public Table Customers; public SalesDB(string connection) : base(connection) { } }
41 Windows Phone Строка подключения 41
42 Windows Phone Создание тестовой базы данных 42 public static void MakeTestDB(string connection) { SalesDB newDB = new SalesDB(connection); if (newDB.DatabaseExists()) { newDB.DeleteDatabase(); } // записать необходимые данные newDB.SubmitChanges(); }
43 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) { // создание записи о клиенте }
44 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);
45 Windows Phone Переменные базы данных 45 #region Sales Manager variables public SalesDB ActiveDB; public Customer ActiveCustomer; #endregion
46 Windows Phone Настройка приложения 46 public App() { // создание тестовой базы данных SalesDB.MakeTestDB( "Data Source=isostore:/Sample.sdf"); // подключение к базе данных ActiveDB = new SalesDB( "Data Source=isostore:/Sample.sdf"); }
47 Windows Phone Создание запроса LINQ 47 var customers = from Customer customer in thisApp.ActiveDB.CustomerTable select customer;
48 Windows Phone Создание запроса LINQ 48 var customers = from Customer customer in thisApp.ActiveDB.CustomerTable select customer;
49 Windows Phone Вывод результатов на экран 49 customerList.ItemsSource = customers;
50 Windows Phone Добавление условий выборки 50 var customers = from Customer customer in thisApp.ActiveDB.CustomerTable where customer.Name.StartsWith("S") select customer;
51 Windows Phone Краткие итоги 51
52 Раздел 5.3
53 Windows Phone Темы раздела 53
54 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
55 Windows Phone Создание связей в классах 55 public class Order { public DateTime OrderDate; public int Quantity; public Customer OrderCustomer; public Product OrderProduct; }
56 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
57 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
58 Windows Phone Внешние ключи 58
59 Windows Phone Класс EntityRef 59 private EntityRef orderCustomer; [Association(IsForeignKey = true, Storage = "orderCustomer")] public Customer OrderCustomer { get { return orderCustomer.Entity; } set { orderCustomer.Entity = value; } }
60 Windows Phone Класс EntityRef 60 private EntityRef orderCustomer; [Association(IsForeignKey = true, Storage = "orderCustomer")] public Customer OrderCustomer { get { return orderCustomer.Entity; } set { orderCustomer.Entity = value; } }
61 Windows Phone Атрибут Association 61 private EntityRef orderCustomer; [Association(IsForeignKey = true, Storage = "orderCustomer")] public Customer OrderCustomer { get { return orderCustomer.Entity; } set { orderCustomer.Entity = value; } }
62 Windows Phone Атрибут Association 62 private EntityRef orderCustomer; [Association(IsForeignKey = true, Storage = "orderCustomer")] public Customer OrderCustomer { get { return orderCustomer.Entity; } set { orderCustomer.Entity = value; } }
63 Windows Phone Атрибут Association 63 private EntityRef orderCustomer; [Association(IsForeignKey = true, Storage = "orderCustomer")] public Customer OrderCustomer { get { return orderCustomer.Entity; } set { orderCustomer.Entity = value; } }
64 Windows Phone Ссылка на экземпляр класса 64 private EntityRef orderCustomer; [Association(IsForeignKey = true, Storage = "orderCustomer")] public Customer OrderCustomer { get { return orderCustomer.Entity; } set { orderCustomer.Entity = value; } }
65 Windows Phone События изменения данных 65 NotifyPropertyChanging("OrderCustomer"); orderCustomer.Entity = value; NotifyPropertyChanged("OrderCustomer");
66 Windows Phone Использование ссылки EntityRef 66 Customer newCustomer = new Customer(); Order newOrder = new Order(); newOrder.OrderCustomer = newCustomer;
67 Windows Phone Связывание клиента с заказами 67
68 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; } }
69 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; } }
70 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; } }
71 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; } }
72 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; } }
73 Windows Phone Настройка связанных классов 73
74 Windows Phone Хранение ссылок 74 [Column] public int OrderCustomerID; private EntityRef orderCustomer = new EntityRef ();
75 Windows Phone Описание ассоциации 75 [Association(IsForeignKey = true, Storage = "orderCustomer", ThisKey = "OrderCustomerID")]
76 Windows Phone Описание ассоциации 76 [Association(IsForeignKey = true, Storage = "orderCustomer", ThisKey = "OrderCustomerID")]
77 Windows Phone Описание ассоциации 77 [Association(IsForeignKey = true, Storage = "orderCustomer", ThisKey = "OrderCustomerID")]
78 Windows Phone Ассоциация в классе Order 78 public Customer OrderCustomer { get { return orderCustomer.Entity; } set { orderCustomer.Entity = value; if (value != null) OrderCustomerID = value.CustomerID; } }
79 Windows Phone Уведомления LINQ 79 set { NotifyPropertyChanging("OrderCustomer"); orderCustomer.Entity = value; NotifyPropertyChanged("OrderCustomer"); if (value != null) OrderCustomerID = value.CustomerID; }
80 Windows Phone Использование класса EntityRow 80 Customer newCustomer = new Customer(); Order newOrder = new Order(); newOrder.OrderCustomer = newCustomer; newCustomer.Orders.Add(newOrder);
81 Windows Phone LINQ и классы 81 foreach (Order o in activeCustomer.Orders) { // выполнить действия с заказом }
82 Windows Phone Проектирование базы данных 82
83 Windows Phone Добавление таблицы OrderItem 83 OrderItemIDOrderIDProductIDQuantity
84 Windows Phone Полная структура базы данных 84
85 Windows Phone Запросы LINQ 85
86 Windows Phone Простой запрос к базе данных 86 DateTime searchDate = new DateTime(2011,8,19); var orders = from Order order in activeDB.OrderTable where order.OrderDate == searchDate select order;
87 Windows Phone Обработка результатов запроса 87 int totalSales = 0; foreach (Order order in orders) { foreach (OrderItem item in order.OrderItems) { totalSales += item.OrderItemProduct.Price; } }
88 Windows Phone Результаты запроса LINQ 88
89 Windows Phone Кэширование результатов 89 List DateOrders = orders.ToList ();
90 Windows Phone Объединение запросов 90
91 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 };
92 Windows Phone Использование результатов 92 List OrderDescriptions = new List (); foreach (var orderDesc in allOrders) { OrderDescriptions.Add(orderDesc.Name + " заказал: " + orderDesc.OrderDescription); }
93 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 };
94 Windows Phone Удаление элементов из таблицы 94 ActiveDB.OrderItemTable.DeleteOnSubmit(item);
95 Windows Phone Удаление связанных объектов 95
96 Windows Phone Краткие итоги 96
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.