【发布时间】:2010-10-09 06:35:03
【问题描述】:
我在 ado.net 实体框架中的 linq to 实体方面遇到了一些问题。基本上我在做的是这样的:
var results = (from c in companies
where c.Name.StartsWith(letter)
select c);
这会被翻译成 SQL,如下所示:
WHERE (CAST(CHARINDEX(@p, [Extent1].[Name]) AS int)) = 1
这很好,但我的表有数百万条记录,所以运行速度非常慢。我需要它生成的是这样的:
WHERE Name LIKE @p + '%'
我搜索了高低,找不到任何解决方案,除了使用存储过程或使用实体 sql...
有没有办法通过 linq 做到这一点?可能是通过某种方式将 linq 扩展到实体 linq 提供程序,或者以某种方式拦截命令树或生成的查询?
【问题讨论】:
-
正是这种事情让我非常不愿意放弃我的存储过程层,转而支持任何生成 SQL 的东西。
标签: c# sql linq linq-to-entities sql-like