LINQ to SQL Designer и тип данных Geography - PullRequest
8 голосов
/ 27 августа 2010

У меня проблемы с загрузкой таблицы в конструктор.Я получаю следующую ошибку:

Один или несколько выбранных элементов содержат тип данных, который не поддерживается конструкторомтип, используемый в таблице, которая вызывает эту ошибку?

Любые указатели очень ценятся.

Ответы [ 3 ]

3 голосов
/ 27 августа 2010

Чтобы исправить эту ошибку:

  1. Создайте представление, основанное на требуемой таблице и не включающее неподдерживаемый тип данных.2. Перетащите представление из Обозревателя серверов / Обозревателя баз данных в конструктор.

или просмотрите эту статью Пропущенный Linq to SQL Spatial . В этой статье приводятся советы и рекомендации поиспользовать типы пространственных данных SQL Server - География и геометрия - в Linq to SQL

1 голос
/ 01 декабря 2017

У меня есть проект (небольшой, предоставленный), в котором появились новые требования к пространственным типам.Я решил посмотреть, как легко будет перейти на Entity Framework с LINQ на SQL.

Это заняло у меня не более 30 минут.Перед началом работы убедитесь, что у вас есть резервная копия управления исходным кодом.

  1. Install-Package EntityFramework -Version {pick one}
  2. Удалите старые файлы .dbml
  3. Создайте новый объектсмоделируйте и обновите ваши ссылки на новые объекты сущностей (это проще, если у вас уже есть базовый репозиторий или что-то, связывающее LINQ to SQL).Я пошел по этому пути (сначала база данных / дизайнер), потому что это был более простой путь обновления с LINQ до SQL.Вы можете сначала попробовать код, если хотите, но ... YMMV.
  4. Обновите строки подключения.Entity Framework имеет свою странную оболочку для традиционных SQL-соединений.Мой вот так, ваш может выглядеть иначе: metadata=res://*/;provider=System.Data.SqlClient;provider connection string='Data Source=.\SQLEXPRESS; Initial Catalog=MyDataBase; Integrated Security=True'
  5. Исправьте ошибки компиляции.Большинство из них будут отличаться в Insert/DeleteOnSubmit и EF Add/Remove или Add/RemoveRange.Области транзакций могут работать по-другому (рассмотрите возможность использования context.Database.BeginTransaction вместо областей транзакций).
  6. Перестройте его после устранения ошибок компиляции.

Вот и все.Это было намного проще, чем я ожидал, и теперь я могу использовать пространственные типы без каких-либо хитростей.

1 голос
/ 27 августа 2010

Проверьте ниже статью / ответ для деталей:

SqlGeography и Linq to Sql

Можно ли использовать SqlGeography с Linq to Sql?

Пространственные типы не поддерживаются Linq to SQL. Поддержка не "не велика" - она ​​не существует.

Вы можете читать их как BLOB, но вы не можете сделать это, просто изменив тип столбца в Linq на SQL. Вам нужно изменить ваши запросы на уровне базы данных, чтобы вернуть столбец как varbinary, используя оператор CAST. Вы можете сделать это на уровне таблицы, добавив вычисляемый столбец varbinary, который Linq с радостью отобразит в байт [].

...