7

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

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

4

2 回答 2

12

我找到了一种似乎可行的解决方法,但需要为每个想要使用 NOEXPAND 提示的 SQL 视图创建第二个视图。在第二个视图中,只需从原始视图中选择所有字段并添加 NOEXPAND 提示。任何需要使用 NOEXPAND 提示的 Linq to SQL 查询现在都可以只针对包装原始视图的视图。

可以在此 MSDN 帖子中找到更多详细信息。

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

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

于 2010-06-28T19:56:49.433 回答
2

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

==编辑==

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

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

于 2010-06-28T19:57:58.493 回答