我有一个索引视图,我需要指定noexpand提示才能使其合理执行。不幸的是,从NOLOCK提示中修改Linq to SQL生成的T-SQL查询时,似乎没有简单的方法可以直接利用这些提示或者是否存在?
我的想法是允许通过使用属性或通过dbml声明性地定制这些东西是有意义的。此外,由于Linq to SQL似乎只针对SQL Server,因此只有我们能够利用这些高级功能(如果它们存在)才有意义。无论实施如何,虽然我对解决这个问题的任何创造性方法感兴趣。
答案 0 :(得分:9)
我发现了一种似乎有效的解决方法,但需要为每个想要使用NOEXPAND提示的SQL视图制作第二个视图。在第二个视图中,只需从原始视图中选择所有字段,然后选择NOEXPAND提示。任何需要使用NOEXPAND提示的Linq to SQL查询现在只能定位包装原始视图的那个视图。
更多详细信息,请参阅this MSDN post。
创建依赖视图时要考虑的其中一个缺点是,您必须确保以正确的依赖顺序应用创建脚本
有没有人有更好的选择?我宁愿不必创建额外的SQL视图来支持使用这个必要的优化器提示。
答案 1 :(得分:2)
我完全同意,但我不相信有这样的方法。在EF4中,您可以使用ExecuteStoreCommand
来直接执行SQL。如果性能不可接受,这可能是您唯一的选择。
== EDIT ==
您也可以通过ExecuteQuery
方法在LINQ to SQL中执行此操作。