Error: "Spatial types and functions are not available for this provider..." while saving to DB

Error: "Spatial types and functions are not available for this provider..." while saving to DB

Postby DanielTulp » Wed 30 Aug 2017 14:07

I use the dotConnect for PostgreSQL version 7.7.819.0 to connect my Asp.NET Web API application running on IIS to a PostgreSQL 9.5 database running on Apache Tomcat on a separate virtual server (VPS).
When I try to add multiple records locally, while my the app on my machine is connected to the online database, everything works fine.
When I try to add multiple records online, I get the error from the title. The error occurs when the dispose method on my unit of work is triggered, so when the records are stored in the database.

The weird thing is, I am not saving any geo information, just plain ASP.NET datatypes

Full error:
Message: Spatial types and functions are not available for this provider because the assembly 'Microsoft.SqlServer.Types' version 10 or higher could not be found. , Stacktrace: at System.Data.Entity.SqlServer.SqlTypesAssemblyLoader.GetSqlTypesAssembly()\r\n at System.Data.Entity.SqlServer.SqlSpatialServices.GeometryFromText(String wellKnownText)\r\n at System.Data.Entity.Core.Mapping.Update.Internal.Propagator.ExtentPlaceholderCreator.InitializeSpatialTypeDefaultMap()\r\n at System.Lazy`1.CreateValue()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Lazy`1.get_Value()\r\n at System.Data.Entity.Core.Mapping.Update.Internal.Propagator.ExtentPlaceholderCreator.GetPropagatorResultForPrimitiveType(PrimitiveType primitiveType, PropagatorResult& result)\r\n at System.Data.Entity.Core.Mapping.Update.Internal.Propagator.ExtentPlaceholderCreator.Visit(EdmMember node)\r\n at System.Data.Entity.Core.Mapping.Update.Internal.Propagator.ExtentPlaceholderCreator.CreateEntitySetPlaceholder(EntitySet entitySet)\r\n at System.Data.Entity.Core.Mapping.Update.Internal.Propagator.Visit(DbScanExpression node)\r\n at System.Data.Entity.Core.Mapping.Update.Internal.Propagator.Visit(DbProjectExpression node)\r\n at System.Data.Entity.Core.Mapping.Update.Internal.UpdateTranslator.<ProduceDynamicCommands>d__a.MoveNext()\r\n at System.Linq.Enumerable.<ConcatIterator>d__71`1.MoveNext()\r\n at System.Data.Entity.Core.Mapping.Update.Internal.UpdateCommandOrderer..ctor(IEnumerable`1 commands, UpdateTranslator translator)\r\n at System.Data.Entity.Core.Mapping.Update.Internal.UpdateTranslator.ProduceCommands()\r\n at System.Data.Entity.Core.Mapping.Update.Internal.UpdateTranslator.Update()\r\n at System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)\r\n at System.Data.Entity.Core.Objects.ObjectContext.SaveChangesToStore(SaveOptions options, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction)\r\n at System.Data.Entity.Core.Objects.ObjectContext.SaveChangesInternal(SaveOptions options, Boolean executeInExistingTransaction)\r\n at System.Data.Entity.Internal.InternalContext.SaveChanges()\r\n at WE.GprVoorraad.Repositories.EF.EFUnitOfWork.Dispose() in C:\\***\\WE.GprVoorraad.Repositories.EF\\EFUnitOfWork.cs:line 33\r\n at WE.GprVoorraad.Api.Controllers.UploadController.<PostCsvFile>d__6.MoveNext() in C:\\***\\WE.GprVoorraad.Api\\Controllers\\UploadController.cs:line 168\\n"
DanielTulp
 
Posts: 3
Joined: Fri 25 Aug 2017 08:06

Re: Error: "Spatial types and functions are not available for this provider..." while saving to DB

Postby Shalex » Thu 31 Aug 2017 10:13

DanielTulp wrote:Spatial types and functions are not available for this provider because the assembly 'Microsoft.SqlServer.Types' version 10 or higher could not be found.
Stacktrace:
at System.Data.Entity.SqlServer.SqlTypesAssemblyLoader.GetSqlTypesAssembly()
at System.Data.Entity.SqlServer.SqlSpatialServices.GeometryFromText(String wellKnownText)
Please make sure that your project is NOT set up for using System.Data.SqlClient provider (there are its classes in your stack trace).

If this doesn't help, upload a small test project with the corresponding DDL/DML script to ftp://ftp.devart.com (credentials: anonymous / yourEmail).
Shalex
Devart Team
 
Posts: 7654
Joined: Thu 14 Aug 2008 12:44

Re: Error: "Spatial types and functions are not available for this provider..." while saving to DB

Postby DanielTulp » Thu 31 Aug 2017 10:41

fixed!

had to include

Code: Select all
<dependentAssembly>
        <assemblyIdentity name="Microsoft.SqlServer.Types" publicKeyToken="89845dcd8080cc91" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" />
      </dependentAssembly>


in the web.config

I used this to determine what the version number used on my server
Code: Select all
AppDomain currentDomain = AppDomain.CurrentDomain;
Assembly[] assems = currentDomain.GetAssemblies();
foreach (Assembly assembly in assems) {
_logger.Info(assembly.GetName().FullName);
}

_logger is a Nlog logger
DanielTulp
 
Posts: 3
Joined: Fri 25 Aug 2017 08:06

Re: Error: "Spatial types and functions are not available for this provider..." while saving to DB

Postby Shalex » Mon 04 Sep 2017 08:27

Thank you for confirming the fix.
Shalex
Devart Team
 
Posts: 7654
Joined: Thu 14 Aug 2008 12:44


Return to dotConnect for PostgreSQL