2

Entity Framework 6.0.0-alpha3 でgeography生成された列を持つ SQL Server 2008 データベースがあります。System.Data.Entity.Spatial.DbGeography

次に、その列を . で読む必要がありますSqlDataReader。しかし、これを行う方法がわかりません。古いコンテキストを使用することはオプションではありません。私はそれを次のようにキャストしようとしましたDbGeography

Location = (DbGeography)reader.GetValue(index)

しかし、私はこのエラーが発生します:

タイプ 'Microsoft.SqlServer.Types.SqlGeography' のオブジェクトをタイプ 'System.Data.Entity.Spatial.DbGeography' にキャストできません

何か提案はありますか?

4

2 に答える 2

2

まあ、それは簡単でした。私はただ混乱していました。ただし、質問を削除する代わりに、同じ質問をしている他の人に回答を投稿します。

// read the value as dynamic:
dynamic temp = reader.GetValue(index);

// the temp contains Lat and Long properties:
var text = string.Format("POINT({0:R} {1:R})", temp.Long, temp.Lat);

// the temp also contains the STSrid as coordinate system id:
var srid = temp.STSrid.Value;

// the rest is really simple:
Location = System.Data.Entity.Spatial.DbGeography.PointFromText(text, srid);
于 2014-08-14T20:14:54.140 に答える