2016-12-21 2 views
2

Есть ли способ манипулировать запросом фреймворка сущности.Манипулирование Entity Framework sql query

У меня есть класс, который имеет столбец геометрии.

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-запросы Entity Framework (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 –