Это продолжение моего последнего поста « Использование Entity Framework для создания баз данных на Windows Phone», где мы рассмотрели шаги по созданию простой модели данных с использованием Entity Framework. Если вы не знаете, как это сделать или просто наверстать упущенное, я предлагаю вам взглянуть.
Когда мы остановились, мы создали простую модель данных, которая имеет три объекта. Мы будем забегать вперед и использовать более обширную модель данных, которая выглядит следующим образом:
значительно отличается от того, где мы остановились, но это все, что нам понадобится для создания полного приложения для Windows Phone. Это заняло час или около того, чтобы собрать.
Я кратко объясню, что было добавлено. Мы хотим, чтобы у каждой идеи было несколько тегов, но мы хотим делиться тегами с другими идеями. Чтобы это произошло, я создал сущность IdeaPlatform с двумя отношениями «один ко многим» со многими концами сущности IdeaPlatform. Платформа такая же настройка. На объекте Idea имена свойств навигации были сокращены, чтобы соответствовать имени их соответствующих объектов. Сущность Status идентична сущности Category, описанной в части 1.
Часть 2. Создание базы данных и файлов классов данных.
С помощью полной модели данных мы можем сгенерировать файл базы данных. Я использую Power Pack для генерации базы данных Entity Designer, так как он помогает, когда вы обновляете модель сущности, а затем должны заново генерировать файл базы данных и классы данных.
Первый шаг — щелкнуть правой кнопкой мыши по рабочему пространству и выбрать «Создать базу данных из модели». Поскольку мы делаем это в первый раз, мы оставим выбранным TablePerTypeStrategy. Нажмите «Далее.
Когда откроется Мастер баз данных, нажмите кнопку Соединение…. В окне «Свойства подключения» убедитесь, что для параметра «Источник данных» установлено значение «Compact 3.5». Если он установлен на что-то другое, нажмите кнопку «Изменить…» и выберите его.
В диалоговом окне «Свойства подключения» нажмите кнопку «Создать…». Установите путь и имя файла для файла базы данных и нажмите OK. Пароль не требуется, поэтому ответьте «да» на предупреждение.
Теперь мы вернулись в диалоговое окно «Свойства подключения», обычно я нажимаю кнопку «Проверить подключение», чтобы быть уверенным. Теперь мы можем нажать ОК.
Вернемся к мастеру, все, что нам нужно сделать, это нажать Далее.
Через несколько секунд сценарий SQL завершит генерацию. Этот скрипт создаст таблицы и отношения между ними. Все, что нужно сделать здесь, это нажать Готово.
Следующим шагом является выполнение сценария SQL с последнего шага. Щелкните правой кнопкой мыши текст сценария и выберите «Выполнить SQL».
Когда откроется диалоговое окно Connection, выберите правильный файл .sdf, который мы создали в шагах 2-4. Я поместил свой файл в папку решения с файлом .sln. Выбрав правильный файл, нажмите «Подключиться».
Еще через несколько секунд сценарий должен вернуть команды, успешно выполненные. Это завершает этапы создания базы данных.
Этот следующий шаг будет казаться не в порядке, но нам понадобится некоторая информация из этого шага для более позднего шага. В обозревателе решений щелкните правой кнопкой мыши решение (корневой узел дерева) и выберите Добавить, затем Новый проект. Мы собираемся добавить новое приложение с привязкой к данным Windows Phone под названием AppTracker.WP. При появлении запроса установите целевую ОС на Windows Phone OS 7.1
Теперь в новом проекте создайте папку с именем Models. Здесь мы разместим наши сгенерированные классы данных. Затем откройте файл MainPage.xaml.cs, чтобы мы могли скопировать пространство имен за несколько минут.
Откройте ваш текстовый редактор и вставьте в него следующую командную строку:
sqlmetal "--PATH AND SDF FILE--" /code:"--PATH AND CS OUTPUT FILE--" /language:csharp /namespace:--NAMESPACE-- /context:--CONTEXT NAME-- /pluralize
Теперь мы можем начать заменять заполнители на правильные значения:
–PATH AND SDF FILE– Replace with the file name and full path the database file. Example: D:\DropBox\Dropbox\__Windows Phone Applications\AppTracker\AppTracker.sdf –PATH AND CS OUTPUT FILE– Replace with the path to the Models folder we created. Then add the name of the file to be created. Example: D:\DropBox\Dropbox\__Windows Phone Applications\AppTracker\AppTracker.WP\Models\DataClasses.cs –NAMESPACE– Replace with the namespace copied from the MainPage.xaml.cs file. Then add .Models to the end of it. Giving it a namespace like this helps keep things separate in a MVVM structure. Example: AppTracker.WP.Models –CONTEXT NAME– Replace with the name of the data Context. I usually use the <AppName>DataContext format. Example: AppTrackerDataContext Once those replacements have been made, the command line we created should look like this:
sqlmetal "D:\DropBox\Dropbox\__Windows Phone Applications\AppTracker\AppTracker.sdf" /code:"D:\DropBox\Dropbox\__Windows Phone Applications\AppTracker\AppTracker.WP\Models" /language:csharp /namespace:AppTracker.WP.Models /context:AppTrackerDataContext /pluralize
Заполнив командную строку, мы можем открыть командную строку Visual Studio. Нажмите кнопку «Пуск» Windows или нажмите клавишу Windows и введите команду word. Вы должны увидеть несколько вариантов, но мы ищем элементы командной строки Visual Studio в разделе «Программы». Если вы видите ссылку на 64-битную версию, вам следует выбрать эту опцию, в противном случае выберите командную строку Visual Studio.
Откроется командная строка. Теперь вернемся к нашему текстовому редактору и скопируем созданную нами командную строку.
И вставьте его в окно командной строки и нажмите ввод.
Который затем создаст новый файл .cs в указанной папке.
Теперь мы возвращаемся в Visual Studio и добавляем этот файл в созданную нами папку Models. Щелкните правой кнопкой мыши папку «Модели» и выберите «Добавить», затем «Существующий элемент».
Как только мы добавим этот файл, произойдут сотни ошибок. Не волнуйтесь, 2 простых шага исправят их все. Первое, что нужно сделать, поскольку это исправит почти всех, — это добавить ссылку на System.Data.Linq в проект AppTracker.WP. На следующих изображениях вы увидите красные ошибки в правой части текста. На втором изображении после добавления ссылки почти весь красный исчез. Это дополнение под названием ReSharper, показывающее мне эту информацию, вы этого не увидите.
Только один последний шаг, чтобы сделать этот файл совместимым с Windows Phone. То есть удалить любые конструкторы DataContext, которые упоминают IDbConnection.
Там должно быть два из них.
Теперь, если мы нажмем F6, чтобы построить решение, оно должно быть успешно построено без ошибок.
И это охватывает вторую часть. В этой части мы взяли модель данных, созданную с использованием Entity Framework, в первой части и сгенерировали файл базы данных .sdf. Затем мы взяли этот файл и использовали SQLMetal для генерации классов данных для нас. Затем мы добавили это в наш проект Windows Phone и исправили все ошибки, чтобы сделать его совместимым.
Следующая часть будет посвящена использованию этих сгенерированных классов для создания базы данных в изолированном хранилище на телефоне и заполнения ее данными по умолчанию.