Пространственный — конструктор EF
Примечание
Ef5 Onwards Only — функции, API и т. д., рассмотренные на этой странице, были представлены в Entity Framework 5. При использовании более ранней версии могут быть неприменимы некоторые или все сведения.
В пошаговом руководстве по видео и пошаговом руководстве показано, как сопоставить пространственные типы с конструктором Entity Framework. В нем также показано, как использовать запрос LINQ для поиска расстояния между двумя расположениями.
В этом пошаговом руководстве будет использоваться модель First для создания новой базы данных, но конструктор EF также можно использовать с первым рабочим процессом базы данных для сопоставления с существующей базой данных.
Поддержка пространственных типов появилась в Entity Framework 5. Обратите внимание, что для использования новых функций, таких как пространственный тип, перечисления и табличное значение функций, необходимо использовать платформа .NET Framework 4.5. Visual Studio 2012 предназначен для .NET 4.5 по умолчанию.
Чтобы использовать типы пространственных данных, необходимо также использовать поставщик Entity Framework с пространственной поддержкой. Дополнительные сведения см . в поддержке поставщика пространственных типов .
Существует два основных типа пространственных данных: география и геометрия. Тип данных geography хранит многоточие (например, координаты широты GPS и долготы). Тип данных геометрии представляет систему координат Euclidean (плоскую).
В этом видео показано, как сопоставить пространственные типы с конструктором Entity Framework. В нем также показано, как использовать запрос LINQ для поиска расстояния между двумя расположениями.
Представлено: Джулия Корнич
Для выполнения этого пошагового руководства вам потребуется установить Visual Studio 2012, Ultimate, Premium, Professional или Web Express.
- Открытие Visual Studio 2012
- В меню "Файл" наведите указатель мыши на "Создать", а затем щелкните "Проект"
- В левой области щелкните Visual C#, а затем выберите шаблон консоли
- Введите SpatialEFDesigner в качестве имени проекта и нажмите кнопку ОК
- Щелкните правой кнопкой мыши имя проекта в Обозреватель решений, выберите пункт "Добавить" и выберите пункт "Создать элемент"
- Выберите данные из меню слева и выберите ADO.NET модель данных сущности в области шаблонов
- Введите UniversityModel.edmx для имени файла и нажмите кнопку "Добавить".
- На странице мастера модели данных сущности выберите пустую модель в диалоговом окне "Выбор содержимого модели"
- Нажмите кнопку Готово.
Отображается конструктор сущностей, предоставляющий область конструктора для редактирования модели.
Мастер выполняет следующие действия.
- Создает файл EnumTestModel.edmx, определяющий концептуальную модель, модель хранения и сопоставление между ними. Задает свойство обработки метаданных edmx-файла для внедрения в выходную сборку, чтобы созданные файлы метаданных были внедрены в сборку.
- Добавляет ссылку на следующие сборки: EntityFramework, System.ComponentModel.DataAnnotations и System.Data.Entity.
- Создает файлы UniversityModel.tt и UniversityModel.Context.tt и добавляет их в edmx-файл. Эти файлы шаблонов T4 создают код, определяющий производный тип DbContext и типы POCO, которые сопоставляются с сущностями в модели edmx.
- Щелкните правой кнопкой мыши пустую область области конструктора, выберите "Добавить сущность>", откроется диалоговое окно "Создать сущность"
- Укажите имя типа в университете и укажите идентификатор идентификатора свойства ключа, оставьте тип int32
- Нажмите кнопку ОК.
- Щелкните правой кнопкой мыши сущность и выберите "Добавить новое "> Скалярное свойство"
- Переименование нового свойства в Name
- Добавьте еще одно скалярное свойство и переименуйте его в Location Open окно свойств и измените тип нового свойства на Geography
- Сохранение модели и сборка проекта
Примечание
При сборке в списке ошибок могут появиться предупреждения об несопоставленных сущностях и сопоставлениях. Эти предупреждения можно игнорировать, так как после того, как мы решили создать базу данных из модели, ошибки будут удалены.
Теперь мы можем создать базу данных, основанную на модели.
- Щелкните правой кнопкой мыши пустое пространство в области конструктора сущностей и выберите "Создать базу данных из модели"
- В диалоговом окне "Выбор данных Подключение ion" мастера создания базы данных отображается кнопка "Создать Подключение ion" (Укажите (localdb)\mssqllocaldb для имени сервера и университета базы данных и нажмите кнопку "ОК"
- Откроется диалоговое окно с запросом на создание новой базы данных, нажмите кнопку "Да".
- Нажмите кнопку "Далее" и мастер создания базы данных создает язык определения данных (DDL) для создания базы данных, созданной DDL отображается в диалоговом окне "Сводка" и Параметры примечания, что DDL не содержит определения таблицы, сопоставленной с типом перечисления.
- Нажатие кнопки " Готово" не выполняет скрипт DDL.
- Мастер создания базы данных выполняет следующие действия: открывается библиотека UniversityModel.edmx.sql в редакторе T-SQL, в редакторе T-SQL создается разделы схемы хранилища и сопоставления файла EDMX. Добавление строка подключения сведений в файл конфигурации App.config
- Нажмите правую кнопку мыши в редакторе T-SQL и выберите диалоговое окно "Выполнить Подключение на сервере", введите сведения о подключении из шага 2 и щелкните Подключение
- Чтобы просмотреть созданную схему, щелкните правой кнопкой мыши имя базы данных в SQL Server обозреватель объектов и выберите "Обновить"
Откройте файл Program.cs, в котором определен метод Main. Добавьте следующий код в функцию Main.
Код добавляет в контекст два новых объекта Университета. Пространственные свойства инициализированы с помощью метода DbGeography.FromText. География, представленная как WellKnownText, передается методу. Затем код сохраняет данные. Затем запрос LINQ, возвращающий объект Университета, где его расположение ближе всего к указанному расположению, создается и выполняется.
using (var context = new UniversityModelContainer())
{
context.Universities.Add(new University()
{
Name = "Graphic Design Institute",
Location = DbGeography.FromText("POINT(-122.336106 47.605049)"),
});
context.Universities.Add(new University()
{
Name = "School of Fine Art",
Location = DbGeography.FromText("POINT(-122.335197 47.646711)"),
});
context.SaveChanges();
var myLocation = DbGeography.FromText("POINT(-122.296623 47.640405)");
var university = (from u in context.Universities
orderby u.Location.Distance(myLocation)
select u).FirstOrDefault();
Console.WriteLine(
"The closest University to you is: {0}.",
university.Name);
}
Скомпилируйте и запустите приложение. Программа выдает следующие результаты.
The closest University to you is: School of Fine Art.
Чтобы просмотреть данные в базе данных, щелкните правой кнопкой мыши имя базы данных в SQL Server обозреватель объектов и выберите "Обновить". Затем нажмите правую кнопку мыши в таблице и выберите "Просмотреть данные".
В этом пошаговом руководстве мы рассмотрели, как сопоставить пространственные типы с помощью конструктора Entity Framework и как использовать пространственные типы в коде.
Отзыв о .NET
.NET — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв: