|
Работа с данными типа Geography MS SQL в C#
|
|||
---|---|---|---|
#18+
Доброго времени суток, ребята! Пытаюсь с помощью Entity.Framework сделать запрос на выгрузку данных из таблицы БД MS SQL с помощью следующего кода: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Но в 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. "" Подскажите пожалуйста, что сделал не верно, как исправить? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2018, 19:06 |
|
Работа с данными типа Geography MS SQL в C#
|
|||
---|---|---|---|
#18+
Vlad__i__mir, https://www.andrewcbancroft.com/2017/03/27/solving-spatial-types-and-functions-are-not-available-with-entity-framework/ ? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2018, 09:54 |
|
Работа с данными типа Geography MS SQL в C#
|
|||
---|---|---|---|
#18+
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 такой информации не нашёл, поэтому просто написал тоже самое. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2018, 11:19 |
|
Работа с данными типа Geography MS SQL в C#
|
|||
---|---|---|---|
#18+
Продолжаю пытаться что-то сделать что бы заработало. Залез в ссылки проекта, нашёл там ссылку на "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". ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2018, 21:15 |
|
Работа с данными типа Geography MS SQL в C#
|
|||
---|---|---|---|
#18+
В классе сущности, который C# сформировал автоматически по таблицы из БД данный тип отображается вот так: public System.Data.Entity.Spatial.DbGeography Koordinate { get; set; } Может тут нужен какой-то другой подход? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2018, 21:25 |
|
Работа с данными типа Geography MS SQL в C#
|
|||
---|---|---|---|
#18+
Vlad__i__mirВ классе сущности, который C# сформировал автоматически по таблицы из БД данный тип отображается вот так: public System.Data.Entity.Spatial.DbGeography Koordinate { get; set; } Может тут нужен какой-то другой подход?чем сформировали? Edmx файл? Vlad__i__mirМожет тут нужен какой-то другой подход?да. Например сделать не свой пример, а чей то из сети или книжки. Потом уже свой. Еще можно пользовательский тип ОРМ. Это уже вручную сделать любой свой тип. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2018, 22:09 |
|
Работа с данными типа Geography MS SQL в C#
|
|||
---|---|---|---|
#18+
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.
Так я и делал функцию на выгрузку по примеру из сети, только там не было типа Географфи и всё работало, а у меня он есть и поэтому выдаёт ошибку. Что за тип ОРМ? В интернете почитал, там написано, что типы Географфи и Геометри Entity Framework поддерживаются с 5-ой версии да и в классе сущностион всё верно автоматически сформировал. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2018, 16:31 |
|
Работа с данными типа Geography MS SQL в C#
|
|||
---|---|---|---|
#18+
Vlad__i__mirтам не было типа Географфи Я имел ввиду найти как раз пример с данным типом. Неужели ни одного примера? Про "Пользовательские типы", они в хибернейте есть. Тебе будет сложно. В EF вроде нет таких. Там можно свой тип сделать. Ещё вариант, сделать запрос и получить байтовый массив. Типа у меня в постгри Select st_asBinary(geometry.... Цикл (byte[])reader.GetValue(0) .... Ищи пример в сети. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2018, 17:35 |
|
Работа с данными типа Geography MS SQL в C#
|
|||
---|---|---|---|
#18+
SQL-сервер то у вас какой версии? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2018, 17:39 |
|
Работа с данными типа Geography MS SQL в C#
|
|||
---|---|---|---|
#18+
вот туториал с 2008 http://www.entityframeworktutorial.net/EntityFramework5/spatial-datatype-in-entity-framework5.aspx ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2018, 17:40 |
|
Работа с данными типа Geography MS SQL в C#
|
|||
---|---|---|---|
#18+
ну и вот это посмотрите, там всё подробненько с нюансами: https://weblog.west-wind.com/posts/2012/Jun/21/Basic-Spatial-Data-with-SQL-Server-and-Entity-Framework-50 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2018, 17:42 |
|
Работа с данными типа Geography MS SQL в C#
|
|||
---|---|---|---|
#18+
Konst_OneSQL-сервер то у вас какой версии? 2017 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2018, 13:41 |
|
Работа с данными типа Geography MS SQL в C#
|
|||
---|---|---|---|
#18+
ищите по версии сервера тогда, может баг какой и патч нужно ставить ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2018, 13:55 |
|
Работа с данными типа Geography MS SQL в C#
|
|||
---|---|---|---|
#18+
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.
Вот моё: Код: 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.
Смущает лишь то, что у меня EF все методы обозначил виртуальными, следовательно они где-то могут ещё описываться, а вот где? В проекте нет. Вот выгрузка данных из примера, вот только в ней не выгружается поле с типом Geography, а берётся только одно поле: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
Вот моя: Код: c# 1. 2. 3. 4. 5. 6. 7.
Но у меня выдает ошибку, и судя потому, что ошибка возникает на строке Код: c# 1.
, если я правильно понял ошибка на стадии преобразования уже полученных по запросу данных в List ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2018, 14:08 |
|
Работа с данными типа Geography MS SQL в C#
|
|||
---|---|---|---|
#18+
Vlad__i__mirВот моё:не твоё, а короткий пример по ссылке работает? Один в один из демки? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2018, 14:28 |
|
Работа с данными типа Geography MS SQL в C#
|
|||
---|---|---|---|
#18+
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=] ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2018, 14:41 |
|
Работа с данными типа Geography MS SQL в C#
|
|||
---|---|---|---|
#18+
Petro123Vlad__i__mirВот моё:не твоё, а короткий пример по ссылке работает? Один в один из демки? Пример по ссылке я не реализовывал, там нужно БД делать, а у меня она уже готовая и в примере нет выгрузки записей с полем типа Geography, а выводится только одно поле типа string, а у меня ошибка именно с Geography ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2018, 14:47 |
|
Работа с данными типа Geography MS SQL в C#
|
|||
---|---|---|---|
#18+
Vlad__i__mir, Вот ты упрямый. Я глянул 10 сек ссылку. Там работа с геометрическим полем. Неважно вырузка или вгрузка. Если демка та работает, то один разговор. Если ет, то другой. Зы. Версию сервера смотреть не там, а отпраить запрос к серверу. Select version или как там, не помню. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2018, 15:05 |
|
Работа с данными типа Geography MS SQL в C#
|
|||
---|---|---|---|
#18+
в SSMS надо выполнить (версия сервера): Код: sql 1.
у базы данных есть понятие уровня совместимости, проверьте, что у вас там (см. настройки базы) PS и сделайте полную установку 2017 SQL, а то у вас клиентская часть стоит от 2012 сервера ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2018, 15:06 |
|
Работа с данными типа Geography MS SQL в C#
|
|||
---|---|---|---|
#18+
Konst_Oneполную установку 2017 SQLда. Геометрические приблуды обычно отдельно галки указыват при установке. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2018, 15:07 |
|
Работа с данными типа Geography MS SQL в C#
|
|||
---|---|---|---|
#18+
Petro123Vlad__i__mirВот моё:не твоё, а короткий пример по ссылке работает? Один в один из демки? Попробовал на своём примере сделать прямо как у них: private static GeographicalKoordinates GetGeographicalKoordinatesEf() { var context = new Database_fast_waterEntities(); var query = context.GeographicalKoordinates.First(); return query; } Выдаёт ошибку уже при запросе в 4-ой строке ((: ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2018, 15:09 |
|
Работа с данными типа Geography MS SQL в C#
|
|||
---|---|---|---|
#18+
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: ) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2018, 15:24 |
|
Работа с данными типа Geography MS SQL в C#
|
|||
---|---|---|---|
#18+
Vlad__i__mirПопробовал на своём примере сделать прямо как у них:вот и не показывай свои простыни код пока не заработает демка в 4 строки. Ставь сервер. Геопрограммирование это не просто. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2018, 15:24 |
|
Работа с данными типа Geography MS SQL в C#
|
|||
---|---|---|---|
#18+
Konst_One, автори сделайте полную установку 2017 SQL, а то у вас клиентская часть стоит от 2012 сервера Вроде делал полною, и MS SQL Manager Studio 2017 установлена, через неё работаю. Можно ли как-то аккуратно выполнить полную установку 2017 SQL, что бы ничего не полетело? Если да, то как? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2018, 15:30 |
|
Работа с данными типа Geography MS SQL в C#
|
|||
---|---|---|---|
#18+
Petro123, авторвот и не показывай свои простыни код пока не заработает демка в 4 строки. Ставь сервер. Геопрограммирование это не просто. Так а что с сервером не так, что сносить его и заново переустанавливать? авторда. Геометрические приблуды обычно отдельно галки указыват при установке. Не спрашивало. Можно эти настройки посмотреть через MS SQL Manager Studio 2017? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2018, 15:34 |
|
|
start [/forum/topic.php?fid=17&msg=39652615&tid=1349193]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
61ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
70ms |
get tp. blocked users: |
2ms |
others: | 264ms |
total: | 441ms |
0 / 0 |