这个article表明EF 5.0+和.NET 4.5完全支持像oracle sdo_geometry这样的空间类型。但是当我尝试导入具有几何的表时,我得到了这个错误:
Data type 'sdo_geometry' not supported by .NET Framework
我已经检查过,我在项目编译器选项中使用.NET 4.5。那我错过了什么?
答案 0 :(得分:1)
如评论所述,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);