我正在寻找linq到实体扩展,它允许将OPTION(MAXDOP x)添加到生成的查询中。对于查询,我想限制他们的SQL Server资源。
类似的东西:
Customers.WithMaxDop(2).Where(...) ..
找不到。 在我尝试挖掘创建自己的扩展之前,我想首先向你们求助 - 你们会建议怎么做?
谢谢!
答案 0 :(得分:2)
这是查询提示,无法通过扩展方法添加。您必须构建全新的EF提供程序或使用提示将查询包装到数据库视图中,并将视图映射为新的只读实体。
EF是数据库之上的抽象(理论上是任何数据库) - 它不应该让你控制这些数据库细节。如果您需要这些详细信息,则必须在数据库层上对它们进行编码,并仅将视图或存储过程公开给EF。
答案 1 :(得分:0)
现在似乎可以使用 EF Core 3.x。 您可以在操作之前和/或之后在低级别“拦截数据库操作”。在微软提供的例子中,他们在查询的末尾添加了一个提示。
command.CommandText += " OPTION (OPTIMIZE FOR UNKNOWN)";
但是,我不知道这是否会在每个操作中发生,或者您是否只能在选定的命令上应用这些拦截。 更多信息请访问:https://docs.microsoft.com/en-us/ef/core/what-is-new/ef-core-3.x/#interception-of-database-operations