Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

'Microsoft.SqlServer.Types' version 10 or higher could not be found on Azure

I'm trying to make a webapi in ASP.NET MVC 4. The webapi used Entity Framework 5 Spatial types and i have wrote a very simple code.

  public List<Area> GetAllAreas()     {         List<Area> aList = db.Areas.ToList();         return aList;     } 

Area contains DbGeometry.

When i run this local it works, but when i publish it to azure it gives me this error:

Spatial types and functions are not available for this provider because the assembly 'Microsoft.SqlServer.Types' version 10 or higher could not be found.

Anyone know how to resolve this ? :)

Thanks!

like image 317
Thomas Bolander Avatar asked Nov 01 '12 09:11

Thomas Bolander


2 Answers

I found the solution ! Just install the nuget package Microsoft.SqlServer.Types

PM> Install-Package Microsoft.SqlServer.Types

Link for more info

like image 95
Thomas Bolander Avatar answered Sep 19 '22 01:09

Thomas Bolander


The answer above works fine when version 11 (SQL Server 2012) of the assembly can be used.

I had a problem with this as my solution has other dependencies on version 13 (SQL Server 2016) of the same assembly. In this case note that Entity Framework (at least v6.1.3) is hardcoded in its SqlTypesAssemblyLoader (the source of this exception) to only look for versions 10 and 11 of the assembly.

To work around this I discovered you can tell Entity Framework which assembly you want to use like this:

SqlProviderServices.SqlServerTypesAssemblyName = typeof(SqlGeography).Assembly.FullName; 
like image 28
Chris Avatar answered Sep 22 '22 01:09

Chris