簡體   English   中英

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

[英]Using oracle sdo_geometry with EntityFramework 6.0 and .NET 4.5

本文指出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); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM