2016-12-21 157 views
2

有什麼辦法來操縱實體框架查詢。操縱實體框架sql查詢

我有一個有幾何列的類。

public class Geom 
{ 
    public Guid Id { get; set; } 
    public string Name { get; set; } 
    public string Geometry { get; set; } 
} 

數據庫上下文從數據庫中獲取數據。

 using (var database = new DatabaseContext()) 
     { 
      var items= database.Geoms; 
     } 

這將數據庫就像一個SQL查詢:"select id,name,geometry from geoms"

我想之前更改查詢發送數據庫是這樣的:

"select id,name,ST_AsText(geometry) from geoms" 

這可能嗎?

因爲我使用postgresql數據庫,所以不能使用DbGeometry。

+0

這可能是矯枉過正,但http://stackoverflow.com/a/33442340/242520 –

回答

0

您可以使用實體框架原始SQL查詢(https://msdn.microsoft.com/en-us/library/jj592907(v=vs.113).aspx)。例如

using (var database = new DatabaseContext()) 
{ 
    var items= database.Geoms.SqlQuery("select id,name,ST_AsText(geometry) from geoms").ToList(); 
} 
+0

我知道原始查詢功能,但我不希望使用它。因爲我需要'EntityTypeConfiuration'實現和其他實體框架屬性。所以我正在尋找重寫方法來更改生成的SQL查詢。 – barteloma

+0

你的意思是一些交叉點嗎?在這種情況下,我可以建議實施IDbCommandInterceptor接口並覆蓋一些方法。請參閱http://www.entityframeworktutorial.net/entityframework6/database-command-interception.aspx –