代码之家  ›  专栏  ›  技术社区  ›  jpierson

如何将noexpand提示与linq to sql一起使用?

  •  5
  • jpierson  · 技术社区  · 14 年前

    我有一个索引视图,我需要为它指定noexpand提示,以便它能够合理地执行。不幸的是,从nolock提示修改linq-to-sql生成的t-sql查询时,似乎没有简单的方法直接利用这些提示,或者是否存在?

    我的想法是允许通过使用属性或通过DBML声明性地定制这些东西是有意义的。另外,由于Linq to SQL似乎只针对SQL Server工作,所以我们也可以利用这些高级功能(如果它们存在的话),这是很有意义的。尽管我对解决这个问题的任何创造性方法都感兴趣,但不管实现如何。

    2 回复  |  直到 13 年前
        1
  •  9
  •   jpierson    13 年前

    我发现了一个解决方法,它似乎可以工作,但需要为每个SQL视图创建第二个视图,以便使用noexpand提示。在第二个视图中,只需从原始视图中选择所有字段并附加noexpand提示。任何需要使用noexpand提示的linq-to-sql查询现在只能针对包装原始视图的视图。

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

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

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

        2
  •  2
  •   Nate Zaugg    14 年前

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

    =编辑=

    您也可以在linq to sql中通过 ExecuteQuery 方法。

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