2016-12-21 8 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

Entity Framework Raw 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を参照してください。 –

関連する問題