这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),因为您可以在非托管驱动程序中处理几何图形。
这里有一些解决方法:
同时使用托管驱动程序和非托管驱动程序(这不是个好主意)
按照评论使用备用数据提供程序(例如 dotConnect)
使用原始 SQL 和 Oracle SDO_UTIL包裹
// result = "POINT(30.1 - 21.9)" DbRawSqlQuery<string> result = dbContext.Database.SqlQuery<string>("SELECT SDO_UTIL.TO_WKTGEOMETRY(COORDS) ...");
上述观点的变体,但使用命令拦截
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/