Spec-Zone .ru
спецификации, руководства, описания, API

22.2.8. EF 5 Поддержки

EF 5 Поддержки основана на новой поддержке.Net Платформы 4.5, который является целевой платформой значения по умолчанию в последней версии VS (2012). Используя эту платформу версия является требованием, чтобы использовать любой EF 5 функций.

Ниже подробное описание на каждой из функций.

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" 	}  

Другой типы значений помимо точки может быть сохранен в типе Геометрии:

Пространственные данные поддерживаются в Модели, Базе данных и Коде Сначала.

Используя пространственные типы с Платформой Объекта Модель является одной из новых функций Соединителя/Сети 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

Пространственные поддерживаемые Функции

Есть некоторые полезные функции, который принимает значения Геометрии:

Перечисление вводит Поддержку

Чтобы использовать перечислимые типы в Платформе Объекта определенный class, он должен следовать за следующими шагами:

В Visual Studio 2012

Используя Базу данных Сначала приближаются

Пример:

    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); 	} 	

Вывод:

Региональная Зона Торгового посредника

Другие важные функции и улучшения, включенные в Платформу Объекта: