2010-08-27 23 views
7

Tengo algunos problemas para cargar una tabla en el diseñador. Recibo el siguiente error.LINQ to SQL Designer y el tipo de datos Geography

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

I estaría correcto en el supuesto de que es el tipo de geografía utilizados en la tabla que está causando este error?

Cualquier apuntador muy apreciado.

Respuesta

1

Comprobar a continuación el artículo/respuesta para el detalle:

SqlGeography and Linq to Sql

Is it possible to use SqlGeography with Linq to Sql?

tipos espaciales no son compatibles con LINQ a SQL. El soporte no es "bueno", es inexistente.

Puede leerlos como BLOB, pero no puede hacer eso simplemente cambiando el tipo de columna en Linq a SQL. Debe modificar sus consultas en el nivel de la base de datos para devolver la columna como varbinary, utilizando la instrucción CAST. Puede hacerlo a nivel de tabla agregando una columna varbinary calculada, que Linq correlacionará felizmente con un byte [].

+0

Gracias, este proyecto acaba de comenzar. ¿Sería mejor cambiarme a un marco de mapeo de tablas (orm) diferente que admita el tipo de geografía? ¿Hay alguno? – Chin

+0

@Chin - revise el artículo donde hay algunos problemas, espero que funcione para usted - que no necesite moverse en otro orm –

2

Para corregir este error:

  1. crear una vista que se basa en la tabla deseada y que no incluye el tipo de datos no soportado. 2.Deslice la vista desde Server Explorer/Database Explorer en el diseñador.

o ver este artículo The Missing Linq to SQL Spatial, este artículo proporciona consejos y trucos sobre cómo utilizar los tipos de datos espaciales de SQL Server -Geography y Geometry- en LINQ to SQL

0

Tengo un proyecto (uno pequeño, concedido) que creció para tener nuevos requisitos para tipos espaciales. Decidí ver qué fácil sería actualizar al marco de la entidad de LINQ a SQL.

No tardé más de 30 minutos. Asegúrese de tener una copia de seguridad de control de fuente antes de comenzar.

  1. Install-Package EntityFramework -Version {pick one}
  2. Eliminar el .dbml archivo (s) de edad
  3. generar un nuevo modelo de entidad y actualizar sus referencias a los nuevos objetos de entidades (esto es más fácil si ya tenía un repositorio de base o algo envoltura LINQ a SQL). Fui por esta ruta (primero la base de datos/diseñador) porque era una ruta de actualización más simple de LINQ a SQL. Puede intentar codificar primero si lo prefiere, pero ... YMMV.
  4. Actualice sus cadenas de conexión. Entity Framework tiene su propia envoltura extraña alrededor de las conexiones SQL tradicionales. El mío es así, el tuyo podría verse diferente: metadata=res://*/;provider=System.Data.SqlClient;provider connection string='Data Source=.\SQLEXPRESS; Initial Catalog=MyDataBase; Integrated Security=True'
  5. Soluciona los errores de compilación. La mayoría de ellos serán diferencias en Insert/DeleteOnSubmit y EF Add/Remove o Add/RemoveRange. Los ámbitos de transacción pueden funcionar de manera diferente (considere usar context.Database.BeginTransaction en lugar de los ámbitos de transacción).
  6. Reconstruya una vez resueltos los errores de compilación.

Eso es todo.Fue mucho más fácil de lo que esperaba y ahora puedo usar los tipos de espacio sin ningún truco.