2010-08-27 5 views
7

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

One or more selected items contain a data type that is not supported by the designer

Был ли я прав, если предположить, что это тип географии, используемый в таблице, который вызывает эту ошибку?

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

ответ

1

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

SqlGeography and Linq to Sql

Is it possible to use SqlGeography with Linq to Sql?

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

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

+0

Спасибо, этот проект только что начался. Будет ли лучше перейти к другой структуре сопоставления таблиц (orm), которая поддерживает тип географии? Есть ли какие-нибудь? – Chin

+0

@Chin - проверьте статью, где есть какая-то работа вокруг, я надеюсь, что это сработает для вас - чем не нужно переезжать на другое место –

2

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

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

или эту статья The Missing Linq to SQL Spatial, В этой статье приведены советы и хаки о том, как использовать типы пространственных данных SQL Server -Geography и Геометрия- в Linq для SQL

0

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

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

  1. Install-Package EntityFramework -Version {pick one}
  2. Удалите старый .dbml файл (ы)
  3. Сформировать новую модель лица и обновить ссылки на новые объекты сущностей (это проще, если у вас уже есть база хранилище или что-то оберточной LINQ к SQL). Я поехал по этому маршруту (сначала/конструктор базы данных), потому что это был более простой путь обновления от LINQ to 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's Add/Remove или Add/RemoveRange. Области транзакций могут работать по-разному (подумайте об использовании context.Database.BeginTransaction вместо областей транзакций).
  6. Восстановить его после устранения ошибок компиляции.

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

 Смежные вопросы

  • Нет связанных вопросов^_^