1

レストランというテーブルを持つSQL2005データベースがあるとしましょう。レストランテーブルには次の列があります。

  • RestaurantId
  • 名前
  • 緯度
  • 経度

ユーザーが名前や住所でレストランを検索できるようにしたい。これをサポートするLINQクエリを作成するにはどうすればよいですか?ユーザーが名前や住所を入力しない、名前だけ、住所だけ、または名前と住所の両方を入力しない可能性をサポートできる必要があります。

私の最初のアイデアは、2つの緯度/経度のペア間の距離を計算するストアドプロシージャと、FREETEXTTABLEを呼び出し、クエリで条件付きの結合呼び出しを使用するためのテーブル値関数を作成することでした。ただし、EntityFramework4はテーブル値関数をサポートしていないようです。

4

2 に答える 2

1

現時点では、地理空間クエリLINQをサポートするものを作成することはできません。これは、SQL Server 2008に存在する特別な空間構文を処理できる構文がないためです。(例)EFLinqToSqlLINQST<whatever>STIntersects(..)

を介してアクセスできるストアドプロシージャを作成する必要がありますEF

結果でフィールドを返したい場合は、コードの同等のフィールドタイプとしてithinkSql GEOGRAPHYを返す必要があります。VARBINARY(MAX)C#

お役に立てれば。

于 2010-04-28T15:53:59.200 に答える
1

あなたは確かにエンティティタイプを返すprocを書くことができます。確かに、EF 1では、それがprocの唯一のオプションでした。procはテーブルではなく値のセットを返しますが、実際にこれが必要かどうかはわかりません。

Context.ExecuteStoreQueryを使用して、EF4で自由形式のT-SQLを実行することもできます。

于 2010-04-28T15:43:02.523 に答える