powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Работа с данными типа Geography MS SQL в C#
25 сообщений из 71, страница 1 из 3
Работа с данными типа Geography MS SQL в C#
    #39650114
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток, ребята!

Пытаюсь с помощью Entity.Framework сделать запрос на выгрузку данных из таблицы БД MS SQL с помощью следующего кода:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
private static List<GeographicalKoordinates> GetGeographicalKoordinatesEf()
        {
            var context = new Database_fast_waterEntities();
            IQueryable<GeographicalKoordinates> query = context.GeographicalKoordinates;
            SqlServerTypes.Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory);//Согласно инструкции использования
                                                                                                 //Microsoft.SqlServer.Types прописал 
                                                                                                 //дан стр перед выполнением пространственных операций
            List<GeographicalKoordinates> listGeographicalKoordinates = query.ToList();
            return listGeographicalKoordinates;
        }



Но в 8-ой строке при выполнение данного кода выдаёт исключение:
"System.InvalidOperationException: "Spatial types and functions are not available for this provider because the assembly 'Microsoft.SqlServer.Types' version 10 or higher could not be found. ""

Библиотеку 'Microsoft.SqlServer.Types' с помощью Nuget загрузил и директиву "using Microsoft.SqlServer.Types;" прописал.
В самом коде перед записью данных из таблицы в список как требовалось по инструкции ("For desktop applications, add the following line of code to run before any spatial operations are performed:") прописал следующий код - строка 5.

Продолжает выдавать исключение "Spatial types and functions are not available for this provider because the assembly 'Microsoft.SqlServer.Types' version 10 or higher could not be found. ""

Подскажите пожалуйста, что сделал не верно, как исправить?
...
Рейтинг: 0 / 0
Работа с данными типа Geography MS SQL в C#
    #39650244
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Работа с данными типа Geography MS SQL в C#
    #39650280
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123, спасибо, но проблема не устранена. Возможно я не там прописываю инструкции "SqlServerTypes.Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory);" и "SqlProviderServices.SqlServerTypesAssemblyName =
"Microsoft.SqlServer.Types, Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91";".
У меня в проекте C# Windows Forms нет класса Default.aspx.cs и я прописываю эти инструкции непосредственно в функции, которая выполняет запрос, возможно это не верно. Как правильно я не знаю (. И ещё вопрос, что это за ключ - "PublicKeyToken=89845dcd8080cc91"? В информации к пакету в NuGet такой информации не нашёл, поэтому просто написал тоже самое.
...
Рейтинг: 0 / 0
Работа с данными типа Geography MS SQL в C#
    #39650763
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Продолжаю пытаться что-то сделать что бы заработало. Залез в ссылки проекта, нашёл там ссылку на "Microsoft.SqlServer.Types", в свойствах увидел, что параметр "Внедрить типы взаимодействия" - False, попробовал поставить True. Теперь выдает следующие 2 ошибки:

1) Ошибка CS1747 Не удается внедрить типы взаимодействия из сборки "Microsoft.SqlServer.Types, Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" из-за отсутствия в ней атрибута "System.Runtime.InteropServices.GuidAttribute";

2) Ошибка CS1759 Внедрение типов взаимодействия из сборки "Microsoft.SqlServer.Types, Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" невозможно, так как у нее отсутствует атрибут "System.Runtime.InteropServices.ImportedFromTypeLibAttribute" или атрибут "System.Runtime.InteropServices.PrimaryInteropAssemblyAttribute".
...
Рейтинг: 0 / 0
Работа с данными типа Geography MS SQL в C#
    #39650766
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В классе сущности, который C# сформировал автоматически по таблицы из БД данный тип отображается вот так:

public System.Data.Entity.Spatial.DbGeography Koordinate { get; set; }

Может тут нужен какой-то другой подход?
...
Рейтинг: 0 / 0
Работа с данными типа Geography MS SQL в C#
    #39650774
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad__i__mirВ классе сущности, который C# сформировал автоматически по таблицы из БД данный тип отображается вот так:

public System.Data.Entity.Spatial.DbGeography Koordinate { get; set; }

Может тут нужен какой-то другой подход?чем сформировали? Edmx файл?

Vlad__i__mirМожет тут нужен какой-то другой подход?да. Например сделать не свой пример, а чей то из сети или книжки. Потом уже свой.
Еще можно пользовательский тип ОРМ. Это уже вручную сделать любой свой тип.
...
Рейтинг: 0 / 0
Работа с данными типа Geography MS SQL в C#
    #39651180
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123чем сформировали? Edmx файл?

да. Например сделать не свой пример, а чей то из сети или книжки. Потом уже свой.
Еще можно пользовательский тип ОРМ. Это уже вручную сделать любой свой тип.

Классы сущности сформировал автоматически с помощью Entity Framework 6.0.0 (ПКМ по проекту - Добавить - Создать элемент - Модель ADO.NET EDM). Вот он целиком (.cs):
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
namespace Project_fast_water_TestLINQ_
{
    using System;
    using System.Collections.Generic;
    using Microsoft.SqlServer.Types;
    public partial class GeographicalKoordinates
    {
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
        public GeographicalKoordinates()
        {
            this.Basin = new HashSet<Basin>();
            this.Locality = new HashSet<Locality>();
            this.Post = new HashSet<Post>();
            SqlServerTypes.Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory);
        }
    
        public int Id_GeographicalKoordinates { get; set; }
        public System.Data.Entity.Spatial.DbGeography Koordinate { get; set; }
        public Nullable<int> SRID { get; set; }
        public Nullable<int> RadiusAction { get; set; }
        public System.Data.Entity.Spatial.DbGeography AllKoordinatesArea { get; set; }
        public string KoordinateText { get; set; }
        public string AllKoordinatesAreaTxt { get; set; }
        public Nullable<int> HeighSeaLevel { get; set; }
        public string description { get; set; }
        public string TypeKoordinates { get; set; }
    
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<Basin> Basin { get; set; }
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<Locality> Locality { get; set; }
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<Post> Post { get; set; }
    }
}



Так я и делал функцию на выгрузку по примеру из сети, только там не было типа Географфи и всё работало, а у меня он есть и поэтому выдаёт ошибку.

Что за тип ОРМ? В интернете почитал, там написано, что типы Географфи и Геометри Entity Framework поддерживаются с 5-ой версии да и в классе сущностион всё верно автоматически сформировал.
...
Рейтинг: 0 / 0
Работа с данными типа Geography MS SQL в C#
    #39651260
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad__i__mirтам не было типа Географфи
Я имел ввиду найти как раз пример с данным типом.
Неужели ни одного примера?
Про "Пользовательские типы", они в хибернейте есть. Тебе будет сложно.
В EF вроде нет таких.
Там можно свой тип сделать.
Ещё вариант, сделать запрос и получить байтовый массив.
Типа у меня в постгри
Select st_asBinary(geometry....
Цикл
(byte[])reader.GetValue(0)
....
Ищи пример в сети.
...
Рейтинг: 0 / 0
Работа с данными типа Geography MS SQL в C#
    #39651262
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL-сервер то у вас какой версии?
...
Рейтинг: 0 / 0
Работа с данными типа Geography MS SQL в C#
    #39651263
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Работа с данными типа Geography MS SQL в C#
    #39651264
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну и вот это посмотрите, там всё подробненько с нюансами:
https://weblog.west-wind.com/posts/2012/Jun/21/Basic-Spatial-Data-with-SQL-Server-and-Entity-Framework-50
...
Рейтинг: 0 / 0
Работа с данными типа Geography MS SQL в C#
    #39652469
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_OneSQL-сервер то у вас какой версии?

2017
...
Рейтинг: 0 / 0
Работа с данными типа Geography MS SQL в C#
    #39652483
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ищите по версии сервера тогда, может баг какой и патч нужно ставить
...
Рейтинг: 0 / 0
Работа с данными типа Geography MS SQL в C#
    #39652496
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_Oneну и вот это посмотрите, там всё подробненько с нюансами:
https://weblog.west-wind.com/posts/2012/Jun/21/Basic-Spatial-Data-with-SQL-Server-and-Entity-Framework-50

Вроде всё тоже самое.
Вот описание сущностей с примера:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
 public class GeoLocationContext : DbContext
    {
        public DbSet<GeoLocation> Locations { get; set; }
    }

    public class GeoLocation
    {
        public int Id { get; set; }
        public DbGeography Location { get; set; }
        public string Address { get; set; }
    }



Вот моё:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
public partial class Database_fast_waterEntities : DbContext
    {
        public Database_fast_waterEntities()
            : base("name=Database_fast_waterEntities")
        {

        }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            throw new UnintentionalCodeFirstException();
        }
    
        public virtual DbSet<Basin> Basin { get; set; }
        public virtual DbSet<Flood> Flood { get; set; }
        public virtual DbSet<GeographicalKoordinates> GeographicalKoordinates { get; set; }
        public virtual DbSet<Ground> Ground { get; set; }
        public virtual DbSet<Locality> Locality { get; set; }
        public virtual DbSet<LocalityAndBasin> LocalityAndBasin { get; set; }
        public virtual DbSet<Post> Post { get; set; }
        public virtual DbSet<PostAndLocality> PostAndLocality { get; set; }
        public virtual DbSet<SolarActivity> SolarActivity { get; set; }
        public virtual DbSet<sysdiagrams> sysdiagrams { get; set; }
        public virtual DbSet<AvgSpeedLevelSnow> AvgSpeedLevelSnow { get; set; }
        public virtual DbSet<AvgSpeedLevelWater> AvgSpeedLevelWater { get; set; }
    
        public virtual int InputGeographyKoordinates(string koordinate, Nullable<int> sRID, string typeKoordinates, Nullable<int> radiusAction, Nullable<int> heighSeaLevel, string description)
        {
            var koordinateParameter = koordinate != null ?
                new ObjectParameter("Koordinate", koordinate) :
                new ObjectParameter("Koordinate", typeof(string));
    
            var sRIDParameter = sRID.HasValue ?
                new ObjectParameter("SRID", sRID) :
                new ObjectParameter("SRID", typeof(int));
    
            var typeKoordinatesParameter = typeKoordinates != null ?
                new ObjectParameter("TypeKoordinates", typeKoordinates) :
                new ObjectParameter("TypeKoordinates", typeof(string));
    
            var radiusActionParameter = radiusAction.HasValue ?
                new ObjectParameter("RadiusAction", radiusAction) :
                new ObjectParameter("RadiusAction", typeof(int));
    
            var heighSeaLevelParameter = heighSeaLevel.HasValue ?
                new ObjectParameter("HeighSeaLevel", heighSeaLevel) :
                new ObjectParameter("HeighSeaLevel", typeof(int));
    
            var descriptionParameter = description != null ?
                new ObjectParameter("description", description) :
                new ObjectParameter("description", typeof(string));
    
            return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("InputGeographyKoordinates", koordinateParameter, sRIDParameter, typeKoordinatesParameter, radiusActionParameter, heighSeaLevelParameter, descriptionParameter);
        }
    
        public virtual int sp_alterdiagram(string diagramname, Nullable<int> owner_id, Nullable<int> version, byte[] definition)
        {
            var diagramnameParameter = diagramname != null ?
                new ObjectParameter("diagramname", diagramname) :
                new ObjectParameter("diagramname", typeof(string));
    
            var owner_idParameter = owner_id.HasValue ?
                new ObjectParameter("owner_id", owner_id) :
                new ObjectParameter("owner_id", typeof(int));
    
            var versionParameter = version.HasValue ?
                new ObjectParameter("version", version) :
                new ObjectParameter("version", typeof(int));
    
            var definitionParameter = definition != null ?
                new ObjectParameter("definition", definition) :
                new ObjectParameter("definition", typeof(byte[]));
    
            return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("sp_alterdiagram", diagramnameParameter, owner_idParameter, versionParameter, definitionParameter);
        }
    
        public virtual int sp_creatediagram(string diagramname, Nullable<int> owner_id, Nullable<int> version, byte[] definition)
        {
            var diagramnameParameter = diagramname != null ?
                new ObjectParameter("diagramname", diagramname) :
                new ObjectParameter("diagramname", typeof(string));
    
            var owner_idParameter = owner_id.HasValue ?
                new ObjectParameter("owner_id", owner_id) :
                new ObjectParameter("owner_id", typeof(int));
    
            var versionParameter = version.HasValue ?
                new ObjectParameter("version", version) :
                new ObjectParameter("version", typeof(int));
    
            var definitionParameter = definition != null ?
                new ObjectParameter("definition", definition) :
                new ObjectParameter("definition", typeof(byte[]));
    
            return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("sp_creatediagram", diagramnameParameter, owner_idParameter, versionParameter, definitionParameter);
        }
    
        public virtual int sp_dropdiagram(string diagramname, Nullable<int> owner_id)
        {
            var diagramnameParameter = diagramname != null ?
                new ObjectParameter("diagramname", diagramname) :
                new ObjectParameter("diagramname", typeof(string));
    
            var owner_idParameter = owner_id.HasValue ?
                new ObjectParameter("owner_id", owner_id) :
                new ObjectParameter("owner_id", typeof(int));
    
            return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("sp_dropdiagram", diagramnameParameter, owner_idParameter);
        }
    
        public virtual ObjectResult<sp_helpdiagramdefinition_Result> sp_helpdiagramdefinition(string diagramname, Nullable<int> owner_id)
        {
            var diagramnameParameter = diagramname != null ?
                new ObjectParameter("diagramname", diagramname) :
                new ObjectParameter("diagramname", typeof(string));
    
            var owner_idParameter = owner_id.HasValue ?
                new ObjectParameter("owner_id", owner_id) :
                new ObjectParameter("owner_id", typeof(int));
    
            return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<sp_helpdiagramdefinition_Result>("sp_helpdiagramdefinition", diagramnameParameter, owner_idParameter);
        }
    
        public virtual ObjectResult<sp_helpdiagrams_Result> sp_helpdiagrams(string diagramname, Nullable<int> owner_id)
        {
            var diagramnameParameter = diagramname != null ?
                new ObjectParameter("diagramname", diagramname) :
                new ObjectParameter("diagramname", typeof(string));
    
            var owner_idParameter = owner_id.HasValue ?
                new ObjectParameter("owner_id", owner_id) :
                new ObjectParameter("owner_id", typeof(int));
    
            return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<sp_helpdiagrams_Result>("sp_helpdiagrams", diagramnameParameter, owner_idParameter);
        }
    
        public virtual int sp_renamediagram(string diagramname, Nullable<int> owner_id, string new_diagramname)
        {
            var diagramnameParameter = diagramname != null ?
                new ObjectParameter("diagramname", diagramname) :
                new ObjectParameter("diagramname", typeof(string));
    
            var owner_idParameter = owner_id.HasValue ?
                new ObjectParameter("owner_id", owner_id) :
                new ObjectParameter("owner_id", typeof(int));
    
            var new_diagramnameParameter = new_diagramname != null ?
                new ObjectParameter("new_diagramname", new_diagramname) :
                new ObjectParameter("new_diagramname", typeof(string));
    
            return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("sp_renamediagram", diagramnameParameter, owner_idParameter, new_diagramnameParameter);
        }
    
        public virtual int sp_upgraddiagrams()
        {
            return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("sp_upgraddiagrams");
        }
    
        public virtual int UpdateGeographyKoordinates(string koordinate, Nullable<int> sRID, string typeKoordinates, Nullable<int> radiusAction, Nullable<int> heighSeaLevel, string description, Nullable<int> id_GeographicalKoordinates)
        {
            var koordinateParameter = koordinate != null ?
                new ObjectParameter("Koordinate", koordinate) :
                new ObjectParameter("Koordinate", typeof(string));
    
            var sRIDParameter = sRID.HasValue ?
                new ObjectParameter("SRID", sRID) :
                new ObjectParameter("SRID", typeof(int));
    
            var typeKoordinatesParameter = typeKoordinates != null ?
                new ObjectParameter("TypeKoordinates", typeKoordinates) :
                new ObjectParameter("TypeKoordinates", typeof(string));
    
            var radiusActionParameter = radiusAction.HasValue ?
                new ObjectParameter("RadiusAction", radiusAction) :
                new ObjectParameter("RadiusAction", typeof(int));
    
            var heighSeaLevelParameter = heighSeaLevel.HasValue ?
                new ObjectParameter("HeighSeaLevel", heighSeaLevel) :
                new ObjectParameter("HeighSeaLevel", typeof(int));
    
            var descriptionParameter = description != null ?
                new ObjectParameter("description", description) :
                new ObjectParameter("description", typeof(string));
    
            var id_GeographicalKoordinatesParameter = id_GeographicalKoordinates.HasValue ?
                new ObjectParameter("Id_GeographicalKoordinates", id_GeographicalKoordinates) :
                new ObjectParameter("Id_GeographicalKoordinates", typeof(int));
    
            return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("UpdateGeographyKoordinates", koordinateParameter, sRIDParameter, typeKoordinatesParameter, radiusActionParameter, heighSeaLevelParameter, descriptionParameter, id_GeographicalKoordinatesParameter);
        }
    }
}

public partial class GeographicalKoordinates
    {
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
        public GeographicalKoordinates()
        {
            this.Basin = new HashSet<Basin>();
            this.Locality = new HashSet<Locality>();
            this.Post = new HashSet<Post>();
            SqlServerTypes.Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory);
        }
    
        public int Id_GeographicalKoordinates { get; set; }
        public System.Data.Entity.Spatial.DbGeography Koordinate { get; set; }
        public Nullable<int> SRID { get; set; }
        public Nullable<int> RadiusAction { get; set; }
        public System.Data.Entity.Spatial.DbGeography AllKoordinatesArea { get; set; }
        public string KoordinateText { get; set; }
        public string AllKoordinatesAreaTxt { get; set; }
        public Nullable<int> HeighSeaLevel { get; set; }
        public string description { get; set; }
        public string TypeKoordinates { get; set; }
    
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<Basin> Basin { get; set; }
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<Locality> Locality { get; set; }
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<Post> Post { get; set; }
    }
}



Смущает лишь то, что у меня EF все методы обозначил виртуальными, следовательно они где-то могут ещё описываться, а вот где? В проекте нет.

Вот выгрузка данных из примера, вот только в ней не выгружается поле с типом Geography, а берётся только одно поле:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
[TestMethod]
public void QueryLocationsTest()
{
    var sourcePoint = CreatePoint(45.712113, -121.527200);

    var context = new GeoLocationContext();

    // find any locations within 5 kilometers ordered by distance
    var matches = 
        context.Locations
                .Where(loc => loc.Location.Distance(sourcePoint) < 5000)
                .OrderBy( loc=> loc.Location.Distance(sourcePoint) )
                .Select( loc=> new { Address = loc.Address, Distance = loc.Location.Distance(sourcePoint) });

    Assert.IsTrue(matches.Count() > 0);

    foreach (var location in matches)
    {
        Console.WriteLine("{0} ({1:n0} meters)", location.Address, location.Distance);
    }
}



Вот моя:
Код: c#
1.
2.
3.
4.
5.
6.
7.
        private static List<GeographicalKoordinates> GetGeographicalKoordinatesEf()
        {
            var context = new Database_fast_waterEntities();
            IQueryable<GeographicalKoordinates> query = context.GeographicalKoordinates;
            List<GeographicalKoordinates> listGeographicalKoordinates = query.ToList();
            return listGeographicalKoordinates;
        }



Но у меня выдает ошибку, и судя потому, что ошибка возникает на строке
Код: c#
1.
List<GeographicalKoordinates> listGeographicalKoordinates = query.ToList();

,
если я правильно понял ошибка на стадии преобразования уже полученных по запросу данных в List
...
Рейтинг: 0 / 0
Работа с данными типа Geography MS SQL в C#
    #39652526
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad__i__mirВот моё:не твоё, а короткий пример по ссылке работает?
Один в один из демки?
...
Рейтинг: 0 / 0
Работа с данными типа Geography MS SQL в C#
    #39652544
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_OneSQL-сервер то у вас какой версии?

Ещё вопрос по поводу сервера. В Windows (Панели управления - Программы и компоненты) указано кроме Microsoft SQL Server 2017, ещё Microsoft SQL Server 2012 Native Client, Microsoft SQL Servera 2012 Native Client, Microsoft System CLR Types для SQL Servera 2014, Microsoft SQL Server 2016 LocalDb и ещё ... (в файле скрин со всеми этими названиями)

Так вот что же это? Я просто начал сомневаться, что у меня именно Microsoft SQL Server 2017 (
[img=]
...
Рейтинг: 0 / 0
Работа с данными типа Geography MS SQL в C#
    #39652549
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123Vlad__i__mirВот моё:не твоё, а короткий пример по ссылке работает?
Один в один из демки?

Пример по ссылке я не реализовывал, там нужно БД делать, а у меня она уже готовая и в примере нет выгрузки записей с полем типа Geography, а выводится только одно поле типа string, а у меня ошибка именно с Geography
...
Рейтинг: 0 / 0
Работа с данными типа Geography MS SQL в C#
    #39652577
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad__i__mir,
Вот ты упрямый.
Я глянул 10 сек ссылку. Там работа с геометрическим полем.
Неважно вырузка или вгрузка.
Если демка та работает, то один разговор. Если ет, то другой.
Зы.
Версию сервера смотреть не там, а отпраить запрос к серверу.
Select version или как там, не помню.
...
Рейтинг: 0 / 0
Работа с данными типа Geography MS SQL в C#
    #39652579
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в SSMS надо выполнить (версия сервера):
Код: sql
1.
Select @@VERSION



у базы данных есть понятие уровня совместимости, проверьте, что у вас там (см. настройки базы)

PS
и сделайте полную установку 2017 SQL, а то у вас клиентская часть стоит от 2012 сервера
...
Рейтинг: 0 / 0
Работа с данными типа Geography MS SQL в C#
    #39652582
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneполную установку 2017 SQLда. Геометрические приблуды обычно отдельно галки указыват при установке.
...
Рейтинг: 0 / 0
Работа с данными типа Geography MS SQL в C#
    #39652585
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123Vlad__i__mirВот моё:не твоё, а короткий пример по ссылке работает?
Один в один из демки?

Попробовал на своём примере сделать прямо как у них:
private static GeographicalKoordinates GetGeographicalKoordinatesEf()
{
var context = new Database_fast_waterEntities();
var query = context.GeographicalKoordinates.First();
return query;
}

Выдаёт ошибку уже при запросе в 4-ой строке ((:
...
Рейтинг: 0 / 0
Работа с данными типа Geography MS SQL в C#
    #39652601
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

Сделал запрос версия 2017: Microsoft SQL Server 2017 (RTM) - 14.0.1000.169 (X64) Aug 22 2017 17:04:49 Copyright (C) 2017 Microsoft Corporation Express Edition (64-bit) on Windows 8.1 Pro 6.3 <X64> (Build 9600: )
...
Рейтинг: 0 / 0
Работа с данными типа Geography MS SQL в C#
    #39652602
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad__i__mirПопробовал на своём примере сделать прямо как у них:вот и не показывай свои простыни код пока не заработает демка в 4 строки. Ставь сервер. Геопрограммирование это не просто.
...
Рейтинг: 0 / 0
Работа с данными типа Geography MS SQL в C#
    #39652609
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_One,
автори сделайте полную установку 2017 SQL, а то у вас клиентская часть стоит от 2012 сервера

Вроде делал полною, и MS SQL Manager Studio 2017 установлена, через неё работаю.
Можно ли как-то аккуратно выполнить полную установку 2017 SQL, что бы ничего не полетело? Если да, то как?
...
Рейтинг: 0 / 0
Работа с данными типа Geography MS SQL в C#
    #39652615
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,
авторвот и не показывай свои простыни код пока не заработает демка в 4 строки. Ставь сервер. Геопрограммирование это не просто.

Так а что с сервером не так, что сносить его и заново переустанавливать?

авторда. Геометрические приблуды обычно отдельно галки указыват при установке.

Не спрашивало. Можно эти настройки посмотреть через MS SQL Manager Studio 2017?
...
Рейтинг: 0 / 0
25 сообщений из 71, страница 1 из 3
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Работа с данными типа Geography MS SQL в C#
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]