gpt4 book ai didi

c# - 在 EntityFramework 6.0 和 .NET 4.5 中使用 oracle sdo_geometry

转载 作者:太空宇宙 更新时间:2023-11-03 13:30:20 24 4
gpt4 key购买 nike

article声明 EF 5.0+ 和 .NET 4.5 完全支持空间类型,如 oracle sdo_geometry。但是当我尝试导入一个带有几何图形的表时,我得到了这个错误:

Data type 'sdo_geometry' not supported by .NET Framework

我已经检查过,我在我的项目编译器选项中使用的是 .NET 4.5。那我错过了什么?

最佳答案

如评论所述,ODP.NET 驱动程序当前不支持 SDO_GEOMETRY 类型。您也不能使用用户定义类型 (UDT),因为您可以在非托管驱动程序中处理几何图形。

这里有一些解决方法:

  1. 同时使用托管驱动程序和非托管驱动程序(这不是个好主意)

  2. 按照评论使用备用数据提供程序(例如 dotConnect)

  3. 使用原始 SQL 和 Oracle SDO_UTIL包裹

    // result = "POINT(30.1 - 21.9)"
    DbRawSqlQuery<string> result =
    dbContext.Database.SqlQuery<string>("SELECT SDO_UTIL.TO_WKTGEOMETRY(COORDS) ...");
  4. 上述观点的变体,但使用命令拦截

    public class MyDbCommandInterceptor : IDbCommandInterceptor 
    {
    public void ReaderExecuting(DbCommand command, DbCommandInterceptionContext<DbDataReader> interceptionContext)
    {
    if (command.CommandText.Contains("__MARKER__"))
    {
    // Do some funky text replacement
    }
    }
    ...
    }

    public partial class MyEntity
    {
    [Column("__MARKER__COLUMNAME"]
    public string Coord { get; set; }
    }

    // Before you run the query:
    MyDbCommandInterceptor interceptor = new MyDbCommandInterceptor();
    DBInterception.Add(interceptor);

关于c# - 在 EntityFramework 6.0 和 .NET 4.5 中使用 oracle sdo_geometry,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20838355/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com