1

假设我有一个 SQL 2005 数据库,其中有一个名为 Restaurants 的表。餐厅表具有以下列:

  • 餐厅编号
  • 姓名
  • 纬度
  • 经度

我想让用户按名称和/或地址搜索餐馆。如何编写 LINQ 查询来支持这一点?我需要能够支持用户不输入姓名或地址、仅输入姓名、仅输入地址或同时输入姓名和地址的可能性。

我最初的想法是编写一个存储过程来计算两个纬度/经度对之间的距离和一个表值函数,用于调用 FREETEXTTABLE 并在我的查询中使用一些条件加入调用。但是,Entity Framework 4 似乎不支持表值函数。

4

2 回答 2

1

您目前无法编写任何LINQ支持地理空间查询的内容——无论EFLinqToSql. 这是因为没有LINQ语法可以处理ST<whatever>SQL Server 2008 中存在的特殊空间语法。(例如。STIntersects(..)

您将需要编写一个存储过程,然后您可以通过EF.

如果您希望Sql GEOGRAPHY在结果中返回一个字段,您需要返回一个VARBINARY(MAX)我认为与C#代码等效的字段类型。

希望这可以帮助。

于 2010-04-28T15:53:59.200 回答
1

您当然可以编写一个返回实体类型的过程。事实上,在 EF 1 中,这是 procs 的唯一选择。proc 返回一组值,而不是一个表,但我看不出你真的需要这个。

您还可以使用Context.ExecuteStoreQuery在 EF 4 中执行自由格式的 T-SQL 。

于 2010-04-28T15:43:02.523 回答