[英]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),就像在非托管驅動程序中一樣可以處理幾何。
以下是一些變通辦法:
將托管驅動程序與非托管驅動程序並行使用(不是一個好主意)
使用注釋的備用數據提供程序(例如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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.