Spec-Zone .ru
спецификации, руководства, описания, API
|
EF 5 Поддержки основана на новой поддержке.Net Платформы 4.5, который является целевой платформой значения по умолчанию в последней версии VS (2012). Используя эту платформу версия является требованием, чтобы использовать любой EF 5 функций.
Ниже подробное описание на каждой из функций.
Пространственный Тип данных (Поддержка типа геометрии). Пространственная поддержка типов данных поддерживается возможностями сервера, которые документируются в: Раздел 12.18, "Пространственные Расширения" есть различные типы для пространственных данных, и типы instantiable, которые поддерживаются в MySQL:
Точка, LineString, Многоугольник, GeometryCollection, MultiPoint, MultiLineString, и MultiPolygon.
В Соединителе/Сети этими различными типами можно управлять с новым типом Геометрии. Перед Соединителем/Сетью 6.7 типы Геометрии не сделали, чтобы MySql Ввел в драйвере. Таким образом, большинство пользователей должно было использовать это при использовании двоичного типа. Это не дольше необходимо. Теперь все определенные операции для любого типа Геометрии могут быть сделаны при использовании этого нового class.
Пример того, как записать данные точки, показывают, здесь используя Соединитель/Сеть 6.7 и MySQL Server 5.6.7 или далее.
//Storing a geometry point MySqlConnection conn = new MySqlConnection("server=localhost;userid=root;database=testgeo;"); conn.Open(); MySqlCommand cmd = new MySqlCommand("CREATE TABLE Test (v Geometry NOT NULL)"); cmd.Connection = conn; cmd.ExecuteNonQuery(); cmd = new MySqlCommand("INSERT INTO Test VALUES(GeomFromText(?v))", conn); cmd.Parameters.Add("?v",MySqlDbType.String); cmd.Parameters[0].Value = "POINT(47.37-122.21)"; cmd.ExecuteNonQuery(); cmd.CommandText = "SELECT AsText(v) FROM Test"; using(MySqlDataReader reader = cmd.ExecuteReader()) { reader.Read(); varval = reader.GetValue(0); Console.WriteLine(val); } conn.Close();
Вывод
ТОЧКА (47.37,-122.21)
Считать ряд строк, который содержит столбец Geometry, может быть достигнуто при использовании appropiate MySqlDataReader. Пример:
cmd.CommandText = "SELECT v FROM Test"; using(MySqlDataReader reader = cmd.ExecuteReader()) { reader.Read(); var val = reader.GetMySqlGeometry(0); var valWithName = reader.GetMySqlGeometry("v"); Console.WriteLine(val.ToString()); // output : ("POINT(47.37 -122.21)" Console.WriteLine(valWithName.ToString()); // output("POINT(47.37 -122.21)" }
Точка геометрии также может содержать SRID (Пространственный Ссылочный Системный Идентификатор) значение. Это значение может также быть сохранено, используя тип геометрии:
Пример:
MySqlGeometry v = new MySqlGeometry(47.37, -122.21, 101); var par =new MySqlParameter("?v", MySqlDbType.Geometry); par.Value = v; MySqlCommand cmd = new MySqlCommand("INSERT INTO Test VALUES(?v)", conn); cmd.Parameters.Add(par); cmd.ExecuteNonQuery(); cmd.CommandText = "SELECT SRID(v) FROM Test"; using (MySqlDataReader reader = cmd.ExecuteReader()) { reader.Read(); var val = reader.GetString(0); Console.WriteLine(val); // output "101" }
Другой типы значений помимо точки может быть сохранен в типе Геометрии:
LineString
MultiLineString
Многоугольник
MultiPolygon
GeometryCollection
Пространственные данные поддерживаются в Модели, Базе данных и Коде Сначала.
Используя пространственные типы с Платформой Объекта Модель является одной из новых функций Соединителя/Сети 6.7.
Пространственные типы могут использоваться с любой из стратегий, используемых, чтобы создать уровень данных любого приложения: База данных Сначала, Код Сначала или Модель Сначала. Платформа объекта поддерживает два основных типа для пространственных данных: DbGeometry и DBGeography. Второй не поддерживается в Соединителе/Сети, так как у сервера MySQL нет никакого эквивалентного типа, к которой карте это вводит. Таким образом, все примеры будут использовать тип DbGeometry.
Пример использования в Коде Сначала.
Объект, который содержит столбец Geometry, может быть определен следующим образом:
public class Distributor { public int DistributorId { get; set; } public string Name { get; set; } public DbGeometry point { get; set; } } public class DistributorsContext : DbContext { public DbSet<Distributor> Distributors { get; set; } }
Создание дб:
using (DistributorsContext context = new DistributorsContext()) { context.Database.Delete(); context.Database.Create(); context.Distributors.Add(new Distributor() { Name = "Graphic Design Institute", point = DbGeometry.FromText("POINT(-122.336106 47.605049)",101), }); context.SaveChanges(); var result = (from u in context.Distributors select u.point.CoordinateSystemId).ToList(); foreach (var item in result) Console.WriteLine("CoordinateSystemId " + item);
Вывод:
CoordinateSystemId 101
Есть некоторые полезные функции, который принимает значения Геометрии:
SpatialDimension
SpatialEnvelope
IsSimpleGeometry
SpatialTypeName
CoordinateSystemId
Точка
XCoordinate
YCoordinate
GeometryFromText
SpatialContains
AsText
SpatialBuffer
SpatialDifference
SpatialIntersection
Типы перечисления используются, чтобы определить ряд именованных констант, которые могут быть присвоены числовому значению.
По умолчанию базовый тип каждого элемента в перечислении является интервалом. Но это может быть определено другой числовой тип при использовании двоеточия. Месяцы Example:enum: байт {Ян, февраль, март, апрель, май, июнь, июль, август, сентябрь, октябрь, ноябрь, декабрь};
Когда значение не определяется в определенном списке, значения автоматически постепенно увеличиваются 1. В предыдущем exampleMonths. У Яна есть значение по умолчанию 0.
Чтобы использовать перечислимые типы в Платформе Объекта определенный class, он должен следовать за следующими шагами:
В Visual Studio 2012
Используя Базу данных Сначала приближаются
Создайте новый проект (удостоверьтесь, что платформа.NET является целью в Новом диалоговом окне Проекта.),
Добавьте новую Модель Объекта
Выберите Существующий Параметр базы данных
Выберите таблицы, которые будут импортированы в модели
Чтобы создать Перечислимый Тип, целочисленный столбец должен существовать в таблице.
В Модели разработчик выбирают таблицу, чтобы использовать.
Щелкните правой кнопкой по столбцу целочисленного типа, и избранный Создают перечислимый тип.
В этой точке весь linq к запросу объектов может использовать Перечислимый тип непосредственно.
Пример:
using (var db = new DistributorsEntities()) { db.Database.CreateIfNotExists(); db.distributors.Add(new distributor { Type = DistributorType.Regional }); db.distributors.Add(new distributor { Type = DistributorType.Reseller }); db.distributors.Add(new distributor { Type = DistributorType.Zone }); db.SaveChanges(); var testQ = (from d in db.distributors select d).FirstOrDefault(); foreach (var item in testQ) Console.WriteLine(item.Type); }
Вывод:
Региональная Зона Торгового посредника
Другие важные функции и улучшения, включенные в Платформу Объекта:
Все запросы LINQ теперь автоматически компилируются и кэшируются, чтобы улучшить производительность запроса.
Поддерживаются многократные Схемы для модели.
Таблица улучшения на вводит Генерацию SQL.
Улучшения производительности.
StoreGeneratedPattern для ключевых столбцов может теперь быть установлен на Окне свойств объекта, и это значение распространит от модели объекта вниз к сохраненному определению. Сохраненный Сгенерированный атрибут Образца позволяет управлять, как Платформа Объекта синхронизирует значения столбцов базы данных и значения свойств объекта;