假设我有一个带有名为Restaurants的表的SQL 2005数据库。 Restaurants表格包含以下列:
我想让用户按名称和/或地址搜索餐馆。如何编写LINQ查询以支持此功能?我需要能够支持用户不输入姓名或地址的可能性,只需要输入姓名,地址或姓名和地址。
我最初的想法是编写一个存储过程来计算两个lat / long对之间的距离,以及一个表值函数,用于调用FREETEXTTABLE并在我的查询中使用一些条件Join调用。但是,实体框架4似乎不支持表值函数。
答案 0 :(得分:1)
你当然可以写a proc which returns entity types。实际上,在EF 1中,这是触发器的唯一选择。 proc返回一组值,而不是表,但我看不出你确实需要它。
您还可以使用Context.ExecuteStoreQuery在EF 4中执行自由格式的T-SQL。
答案 1 :(得分:1)
此时您无法编写支持地理空间查询的任何LINQ
- 无论是EF
还是LinqToSql
。这是因为没有LINQ
语法可以处理SQL Server 2008中存在的特殊ST<whatever>
空间语法。(例如STIntersects(..)
)
您需要编写一个存储过程,然后您可以通过EF
进行访问。
如果您希望在结果中返回Sql GEOGRAPHY
字段,则需要返回VARBINARY(MAX)
我认为C#
代码的等效字段类型。
希望这有助于。