如何使用Linq to SQL的NOEXPAND提示?

时间:2010-06-28 19:51:28

标签: linq-to-sql indexed-view query-hints

我有一个索引视图,我需要指定noexpand提示才能使其合理执行。不幸的是,从NOLOCK提示中修改Linq to SQL生成的T-SQL查询时,似乎没有简单的方法可以直接利用这些提示或者是否存在?

我的想法是允许通过使用属性或通过dbml声明性地定制这些东西是有意义的。此外,由于Linq to SQL似乎只针对SQL Server,因此只有我们能够利用这些高级功能(如果它们存在)才有意义。无论实施如何,虽然我对解决这个问题的任何创造性方法感兴趣。

2 个答案:

答案 0 :(得分:9)

我发现了一种似乎有效的解决方法,但需要为每个想要使用NOEXPAND提示的SQL视图制作第二个视图。在第二个视图中,只需从原始视图中选择所有字段,然后选择NOEXPAND提示。任何需要使用NOEXPAND提示的Linq to SQL查询现在只能定位包装原始视图的那个视图。

更多详细信息,请参阅this MSDN post

创建依赖视图时要考虑的其中一个缺点是,您必须确保以正确的依赖顺序应用创建脚本

有没有人有更好的选择?我宁愿不必创建额外的SQL视图来支持使用这个必要的优化器提示。

答案 1 :(得分:2)

我完全同意,但我不相信有这样的方法。在EF4中,您可以使用ExecuteStoreCommand来直接执行SQL。如果性能不可接受,这可能是您唯一的选择。

== EDIT ==

您也可以通过ExecuteQuery方法在LINQ to SQL中执行此操作。

http://msdn.microsoft.com/en-us/library/bb399403.aspx