Estoy tratando de hacer un webapi en ASP.NET MVC 4. El webapi usó Entity Framework 5 tipos espaciales y escribí un código muy simple.
public List<Area> GetAllAreas()
{
List<Area> aList = db.Areas.ToList();
return aList;
}
El área contiene DbGeometry.
Cuando ejecuto este local, funciona, pero cuando lo publico en azul, me da este error:
Los tipos y funciones espaciales no están disponibles para este proveedor porque no se pudo encontrar el ensamblado 'Microsoft.SqlServer.Types' versión 10 o superior.
Alguien sabe como resolver esto ? :)
¡Gracias!
asp.net-mvc
entity-framework
azure
Thomas Bolander
fuente
fuente
Respuestas:
¡Encontré la solución! Simplemente instale el paquete nuget Microsoft.SqlServer.Types
Enlace para más información
fuente
La respuesta anterior funciona bien cuando se puede usar la versión 11 (SQL Server 2012) del ensamblado.
Tuve un problema con esto porque mi solución tiene otras dependencias en la versión 13 (SQL Server 2016) del mismo ensamblado. En este caso, tenga en cuenta que Entity Framework (al menos v6.1.3) está codificado en su SqlTypesAssemblyLoader (el origen de esta excepción) para buscar solo las versiones 10 y 11 del ensamblado.
Para solucionar esto, descubrí que puede decirle a Entity Framework qué ensamblado desea usar de esta manera:
fuente
EntityContext
clase personalizada (que heredaDbContext
).SqlProviderServices.SqlServerTypesAssemblyName = typeof(SqlGeography).Assembly.FullName;
Por alguna razón, me faltaba un redireccionamiento vinculante que me solucionó este problema.
Agregar lo siguiente solucionó mi problema
fuente
AppDomain currentDomain = AppDomain.CurrentDomain; Assembly[] assems = currentDomain.GetAssemblies(); foreach (Assembly assembly in assems) { _logger.Info(assembly.GetName().FullName); }
donde _logger es un registrador NlogHay 2 formas de solucionarlo:
La segunda forma es usar el administrador de paquetes NuGet e instalar
Paquete de instalación Microsoft.SqlServer.Types
Luego siga las notas del complemento como se muestra a continuación
fuente
~/
lugar de~/bin
. Asegúrese de revisar su ruta también.También encontré este problema, pero el paquete nuget Microsoft.SqlServer.Types ya estaba instalado.
Lo que resolvió el problema para mí fue ir a Solución> Referencias> System.Data.Entity> Propiedades> Copiar local y establecerlo en Verdadero.
Nota: Copiar local para Microsoft.SqlServer.Types ya estaba establecido en verdadero, y aunque el problema era con System.Data.Entity, el mensaje de error seguía siendo sobre Microsoft.SqlServer.Types.
La solución es del foro de Windows Azure .
fuente
Agregue "pendentAssembly "el archivo Web.config
Esto funcionó para mi
fuente
La solución para mí fue simplemente agregar esta línea de código a Global.asax.cs en
Application_Start()
:Buena suerte hermanos.
fuente
Siguiendo un comentario en una respuesta para la publicación actual, agregar estas dos líneas (preferiblemente a la función principal) resolvió mi problema para la aplicación de consola:
fuente
En mi caso (una aplicación WebForms) resolví el problema agregando las siguientes líneas en
Application_Start
elGlobal.asax
archivo.Espero que esto ayude a alguien.
fuente
Ninguna de las soluciones anteriores me funcionó.
Sabes qué, este error también puede deberse a la falta de recursos en el servidor . Reinicié el servidor SQL y se resolvió automáticamente.
fuente
Solo tuve el mismo problema. Estoy usando una
EF6
llamadaSQL
que tiene una función SQL que usa comandos espaciales. Probé esto a través de una prueba unitaria y funcionó bien. Cuando fui a conectar miAsp.Net
solución, recibí el errorMediante la adición de los
NUGET
"Microsoft.SqlServer.Types" paquete y añadiendoSqlServerTypes.Utilities.LoadNativeAssemblies(Server.MapPath("~/bin"));
a laApplication_Start method
deGlobal.asax.cs
todo funcionaba bien.fuente
En mi caso, una cadena de conexión mal compuesta causó esto. Verifique si su cadena de conexión está compuesta correctamente.
fuente