Entity framework 使用dotConnect 6.7 for PostgreSQL在EF5中插入空间\几何图形

Entity framework 使用dotConnect 6.7 for PostgreSQL在EF5中插入空间\几何图形,entity-framework,postgresql,devart,Entity Framework,Postgresql,Devart,我为PostgreSQL安装了最新的dotConnect。我试图在Postgres数据库中插入一条记录。我有一个几何列,它给了我错误。代码如下: using (var context = new WKP_DBEntities()) { var Location = DbGeometry.PointFromText(string.Format("POINT({0} {1})", 157873, 364282), 28992); var record = new monitori

我为PostgreSQL安装了最新的dotConnect。我试图在Postgres数据库中插入一条记录。我有一个几何列,它给了我错误。代码如下:

using (var context = new WKP_DBEntities())
 {
    var Location = DbGeometry.PointFromText(string.Format("POINT({0} {1})", 157873, 364282), 28992);

    var record = new monitoring_object()
    {
        geometry = Location,
        last_changed_by = "ssg",
    };

    context.monitoring_object.Add(record);
    context.SaveChanges();
}
以下是错误消息:

System.Data.Entity.Infrastructure.DbUpdateException was unhandled
  HResult=-2146233087
  Message=An error occurred while updating the entries. See the inner exception for details.
  Source=EntityFramework
  StackTrace:
       at System.Data.Entity.Internal.InternalContext.SaveChanges()
       at System.Data.Entity.Internal.LazyInternalContext.SaveChanges()
       at System.Data.Entity.DbContext.SaveChanges()
       at ConsoleApplicationGEOdata.Program.Main(String[] args) in c:\Users\Stefan\Documents\Visual Studio 2012\Projects\ConsoleApplicationGEOdata\ConsoleApplicationGEOdata\Program.cs:line 38
       at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
       at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()
  InnerException: System.Data.UpdateException
       HResult=-2146233087
       Message=An error occurred while updating the entries. See the inner exception for details.
       Source=System.Data.Entity
       StackTrace:
            at System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager, IEntityAdapter adapter)
            at System.Data.EntityClient.EntityAdapter.Update(IEntityStateManager entityCache)
            at System.Data.Objects.ObjectContext.SaveChanges(SaveOptions options)
            at System.Data.Entity.Internal.InternalContext.SaveChanges()
       InnerException: System.ArgumentException
            HResult=-2147024809
            Message=Cannot convert value
            Source=Devart.Data.PostgreSql
            StackTrace:
                 at Devart.Data.PostgreSql.af.a(Object A_0, Type A_1, Encoding A_2)
                 at Devart.Data.PostgreSql.af.a(String A_0, Encoding A_1, PgSqlType A_2, Object A_3, Int32 A_4, Boolean A_5)
                 at Devart.Data.PostgreSql.PgSqlCommand.a(String A_0, Encoding A_1, ArrayList A_2, Boolean A_3)
                 at Devart.Data.PostgreSql.PgSqlCommand.InternalExecute(CommandBehavior behavior, IDisposable stmt, Int32 startRecord, Int32 maxRecords)
                 at Devart.Common.DbCommandBase.InternalExecute(CommandBehavior behavior, IDisposable stmt, Int32 startRecord, Int32 maxRecords, Boolean nonQuery)
                 at Devart.Common.DbCommandBase.ExecuteDbDataReader(CommandBehavior behavior, Boolean nonQuery)
                 at Devart.Common.DbCommandBase.ExecuteDbDataReader(CommandBehavior behavior)
                 at System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior)
                 at Devart.Data.PostgreSql.Entity.y.a(CommandBehavior A_0)
                 at Devart.Common.Entity.i.b(CommandBehavior A_0)
                 at Devart.Data.PostgreSql.Entity.y.b(CommandBehavior A_0)
                 at System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior)
                 at System.Data.Mapping.Update.Internal.DynamicUpdateCommand.Execute(UpdateTranslator translator, EntityConnection connection, Dictionary`2 identifierValues, List`1 generatedValues)
                 at System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager, IEntityAdapter adapter)
            InnerException:

我做错了什么?

您的代码在我们的环境中工作: a) PostgreSQL v 6.7.287的dotConnect b) 夏普地图v1 RC3 c) Postgis 2.0 d) DDL: 创建表监视对象 ( 序列号不为空, 几何学, 最后一个字符因字符变化而改变 );

请提供下列资料: 1) 您的SharpMap的版本。请注意,当前版本的dotConnect for PostgreSQL支持SharpMap 1.0 RC3()。1.0最终版本将很快得到支持 2) 您的Postgis版本。它应该是2.0(或更高)版本。您可以通过在数据库中执行“select postgis_version()”来检查它 3) 监视对象表的DDL脚本 4) 如果可能,一个小的测试项目


相应的Devart文档可在上找到。

请告诉我您不是真正指PostgreSQL 6.7,而是您输入了一个错误<代码>选择版本()并将输出粘贴到您的问题中。(好的,你不可能是指6.7,因为从来没有PostgreSQL 6.7版本;也许你是指用于PostgreSQL的DotConnect 6.7?)你似乎已经切断了异常最重要的部分;该异常输出不完整。很抱歉,它是PostgreSQL的DotConnect 6.7。换了。对于异常,这就是所有的:我做了一个“复制异常细节到剪贴板”。最后一个InnerException为null.OK。检查PostgreSQL server错误日志,查看是否有任何查询错误报告,或者该错误在堆栈中是否更高。如果是这样的话,你可能想和DotConnect的人谈谈。