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

При создании БД он поддерживал же данный тип данных и сам предлагал его в списке доступных
...
Рейтинг: 0 / 0
Работа с данными типа Geography MS SQL в C#
    #39652626
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad__i__mir,
Выше две ссылки с примерами. Почему не делаем? Причем тут версия сервера?
Удачи!
...
Рейтинг: 0 / 0
Работа с данными типа Geography MS SQL в C#
    #39652693
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123Vlad__i__mir,
Вот ты упрямый.
Я глянул 10 сек ссылку. Там работа с геометрическим полем.
Неважно вырузка или вгрузка.
Если демка та работает, то один разговор. Если ет, то другой.
Зы.
Версию сервера смотреть не там, а отпраить запрос к серверу.
Select version или как там, не помню.

Решил последовать твоему совету и реализовать пример из 2-ой ссылки.
EF выдал предупреждение:
Предупреждение Ошибка 6002: В таблице или представлении "TestGeography.dbo.Geo" не определен первичный ключ. Ключ был выведен, а определение таблицы или представления было создано в режиме только для чтения. ProjectTestGeography D:\Учеба ФМИТ 2 курс\ОЯиС\ProjectTestGeography\ProjectTestGeography\TestGeography.edmx 1

Ну это ладно. После реализации всего и запуска выдало вот такое исключение (
[img=]
И мне ещё показалось странным, что в БД он создает таблицу с полями:
Код: sql
1.
2.
3.
4.
[id] [int] IDENTITY(1,1) NOT NULL,
    [Location] [geography] NULL,
    [Long] [float] NOT NULL,
    [Lat] [float] NOT NULL

,
а класс с полями
public class GeoLocation
{
public int Id { get; set; }
public DbGeography Location { get; set; }
public string Address { get; set; }
}
Попробовал это исправить, но результат тот же.
...
Рейтинг: 0 / 0
Работа с данными типа Geography MS SQL в C#
    #39652717
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad__i__mir,
Руками в бд делать таблу, а edmx это классы по табле.
...
Рейтинг: 0 / 0
Работа с данными типа Geography MS SQL в C#
    #39652732
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123Vlad__i__mir,
Руками в бд делать таблу, а edmx это классы по табле.

Так я все БД руками и делал, а потом уже создавал проект C# соединял его с БД и с помощью EF автоматически формировал классы по БД
...
Рейтинг: 0 / 0
Работа с данными типа Geography MS SQL в C#
    #39652738
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вас не смущает, что сущности разные?

Код: c#
1.
2.
3.
4.
5.
6.
public class GeoLocation
{
public int Id { get; set; }
public DbGeography Location { get; set; }
public string Address { get; set; }
}



Код: sql
1.
2.
3.
4.
[id] [int] IDENTITY(1,1) NOT NULL,
    [Location] [geography] NULL,
    [Long] [float] NOT NULL,
    [Lat] [float] NOT NULL
...
Рейтинг: 0 / 0
Работа с данными типа Geography MS SQL в C#
    #39652759
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_One,
авторвас не смущает, что сущности разные?
Конечно смутила, вот что я ранее писал об этом:
авторНу это ладно. После реализации всего и запуска выдало вот такое исключение (
[img=]
И мне ещё показалось странным, что в БД он создает таблицу с полями:
[id] [int] IDENTITY(1,1) NOT NULL,
[Location] [geography] NULL,
[Long] [float] NOT NULL,
[Lat] [float] NOT NULL
,
а класс с полями
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.
public partial class GeoLocation
    {
        public int id { get; set; }
        public System.Data.Entity.Spatial.DbGeography Location { get; set; }
        public double Long { get; set; }
        public double Lat { get; set; }
        public string Address { get; set; }
    }
...
Рейтинг: 0 / 0
Работа с данными типа Geography MS SQL в C#
    #39652763
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_One, ошибка та же
[img=]
...
Рейтинг: 0 / 0
Работа с данными типа Geography MS SQL в C#
    #39652888
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad__i__mir,
Проблемы решать по мере поступления.
- убрать геометрическое поле и добиться чтобы генерируемый класс соответствовал табле в бд.
...
Рейтинг: 0 / 0
Работа с данными типа Geography MS SQL в C#
    #39653126
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что-то странно вы работаете со своей табличкой Location.
вы сначала просто выборку сделайте, пример же у вас был выше
...
Рейтинг: 0 / 0
Работа с данными типа Geography MS SQL в C#
    #39653129
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и проверьте настройки строки соединения в своём конфиге, может вы провайдер выбрали неверный
...
Рейтинг: 0 / 0
Работа с данными типа Geography MS SQL в C#
    #39653319
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,
Если я уберу геометрическре поле, то генерируемый класс не будет соответствовать БД, а приводить класс в соответствии с таблицей БД я уже пробовал, выше писал об этом - результат тот же
...
Рейтинг: 0 / 0
Работа с данными типа Geography MS SQL в C#
    #39653343
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_One,
авторчто-то странно вы работаете со своей табличкой Location.
вы сначала просто выборку сделайте, пример же у вас был выше

И обычную выгрузку я пробовал, тоже самое исключение, что и на предыдущем скрине:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
private static List<Geo> GetGeographicalKoordinatesEf()
        {
            var context = new GeoLocationTest();
            IQueryable<Geo> query = context.Locations;
           
            List<Geo> listGeographicalKoordinates = query.ToList();
            return listGeographicalKoordinates;
        }
...
Рейтинг: 0 / 0
Работа с данными типа Geography MS SQL в C#
    #39653349
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_One,
автори проверьте настройки строки соединения в своём конфиге, может вы провайдер выбрали неверный

Всё нормально с ним - "providerName="System.Data.EntityClient"". В моём примере таблицы не имеющие тип Geography выгружаются с этим провайдером без проблем.
...
Рейтинг: 0 / 0
Работа с данными типа Geography MS SQL в C#
    #39653366
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad__i__mirPetro123,
Если я уберу геометрическре поле, то генерируемый класс не будет соответствовать БД, а приводить класс в соответствии с таблицей БД я уже пробовал, выше писал об этом - результат тот же
Не понял.
В бд сделать копию таблицы без поля и протестить.
30 минут времени.
Работаем!
...
Рейтинг: 0 / 0
Работа с данными типа Geography MS SQL в C#
    #39653370
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я вот вам про это:

Код: c#
1.
2.
3.
  <connectionStrings>
    <add name="Entities" connectionString="metadata=res://*/Entities.csdl|res://*/Entities.ssdl|res://*/Entities.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=servername;initial catalog=databasename;integrated security=True;multipleactiveresultsets=True;application name=EntityFramework&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>
...
Рейтинг: 0 / 0
Работа с данными типа Geography MS SQL в C#
    #39653371
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad__i__mir,
Еще раз перечитал.
Не врубаюсь.
Ты без поля покажи таблу dml и класс после генерации.
Потом тоже самое добавив поле.
...
Рейтинг: 0 / 0
Работа с данными типа Geography MS SQL в C#
    #39653376
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
Install-Package Microsoft.SqlServer.Types
...
Рейтинг: 0 / 0
Работа с данными типа Geography MS SQL в C#
    #39653379
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и это в конфиг:

Код: c#
1.
2.
3.
4.
    <dependentAssembly>
      <assemblyIdentity name="Microsoft.SqlServer.Types" publicKeyToken="89845dcd8080cc91" culture="neutral" />
      <bindingRedirect oldVersion="10.0.0.0-11.0.0.0" newVersion="14.0.0.0" />
    </dependentAssembly>
...
Рейтинг: 0 / 0
Работа с данными типа Geography MS SQL в C#
    #39653433
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,
авторТы без поля покажи таблу dml и класс после генерации.
Потом тоже самое добавив поле.

Вот это без поля Geography -работает:
Код: 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.
namespace TestWithoutGeography
{
    using System;
    using System.Data.Entity;
    using System.Data.Entity.Infrastructure;
    
    public partial class TestGeography2Entities : DbContext
    {
        public TestGeography2Entities()
            : base("name=TestGeography2Entities")
        {
        }
    
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            throw new UnintentionalCodeFirstException();
        }
    
        public virtual DbSet<Geo> Geos { get; set; }
    }
}

namespace TestWithoutGeography
{
    using System;
    using System.Collections.Generic;
    
    public partial class Geo
    {
        public int id { get; set; }
        public double Long { get; set; }
        public double Lat { get; set; }
    }
}

class Program
    {
        private static List<Geo> GetGeoEf()
        {
            var context = new TestGeography2Entities();
            IQueryable<Geo> query = context.Geos;
            List<Geo> listGeo = query.ToList();
            return listGeo;
        }
        static void Main(string[] args)
        {
            foreach (var x in GetGeoEf())
                Console.WriteLine(x.Lat + " " + x.Long + ";" + "\n");
        }
    }
}



Вот это с полем Geography - не работает:
Код: 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.
namespace ProjectTestGeography
{
    using System;
    using System.Data.Entity;
    using System.Data.Entity.Infrastructure;
    
    public partial class GeoLocationContext : DbContext
    {
        public GeoLocationContext()
            : base("name=TestGeographyEntities")
        {
        }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            throw new UnintentionalCodeFirstException();
        }

        public virtual DbSet<Geo> Locations { get; set; }
    }
}

namespace ProjectTestGeography
{
    using System;
    using System.Collections.Generic;
    
    public partial class Geo
    {
        public int id { get; set; }
        public System.Data.Entity.Spatial.DbGeography Location { get; set; }
        public double Long { get; set; }
        public double Lat { get; set; }
    }
}

class Program
    {
private static List<Geo> GetGeographicalKoordinatesEf()
        {
            
            var context = new GeoLocationContext();
            IQueryable<Geo> query = context.Locations;
            List < Geo > listGeographicalKoordinates = query.ToList();
            return listGeographicalKoordinates;
        }
static void Main(string[] args)
        {
            foreach (var x in GetGeographicalKoordinatesEf())
                Console.WriteLine(x.Lat + " " + x.Long + ";" + "\n");
        }
    }
...
Рейтинг: 0 / 0
Работа с данными типа Geography MS SQL в C#
    #39653442
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad__i__mir,
Сделай один контекст для обоих примеров и убери статический метод.
...
Рейтинг: 0 / 0
Работа с данными типа Geography MS SQL в C#
    #39653446
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_One,
авторInstall-Package Microsoft.SqlServer.Types

Установил данный пакет через Nuget Manager. Скачалась версия "14.0.314.76".

автори это в конфиг:

В App.config прописал:
Код: c#
1.
2.
3.
4.
<dependentAssembly>
    <assemblyIdentity name="Microsoft.SqlServer.Types" publicKeyToken="89845dcd8080cc91" culture="neutral" />
    <bindingRedirect oldVersion="10.0.0.0-11.0.0.0" newVersion="14.0.314.76" />
  </dependentAssembly>



Выдал следующею ошибку:
"System.TypeInitializationException: "Инициализатор типа "System.Data.Entity.Internal.AppConfig" выдал исключение."

ConfigurationErrorsException: Система конфигурации не прошла инициализацию

ConfigurationErrorsException: Неизвестный раздел конфигурации dependentAssembly."
...
Рейтинг: 0 / 0
Работа с данными типа Geography MS SQL в C#
    #39653449
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad__i__mirВ App.config прописал:все удали и когда выберешь прова в меню Сгенерировать классы само должно прописаться.
...
Рейтинг: 0 / 0
Работа с данными типа Geography MS SQL в C#
    #39653450
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,
авторСделай один контекст для обоих примеров и убери статический метод.

Полностью одинаковый? Даже "base("name=TestGeographyEntities")"?

Убрать статический метод - это прописать код выгрузки в Main()?
...
Рейтинг: 0 / 0
Работа с данными типа Geography MS SQL в C#
    #39653451
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad__i__mirПолностью одинаковый? Даже "base("name=TestGeographyEntities")"?
В одной базе две таблы это один edmx и импорт туда две таблы.
Это один контекст.
...
Рейтинг: 0 / 0
25 сообщений из 71, страница 2 из 3
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Работа с данными типа Geography MS SQL в C#
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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