2016-12-21 1 views
2

엔티티 프레임 워크 쿼리를 조작 할 수있는 방법이 있습니까?Entity Framework 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

Entity Framework 원시 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를 참조하십시오. –