为了从Sql查询中以随机顺序获取结果,我通常按新的Guid进行排序。我之前已经使用Entity-
Framework完成了此操作,但是由于某种原因,它现在无法正常工作。
例如(使用Adventureworks2008r2数据库),我在LinqPad中运行以下查询:
(from t in Employees
orderby Guid.NewGuid()
select new {t.Person.FirstName,t.Person.LastName,t.JobTitle})
这将生成以下SQL:
SELECT [t1].[FirstName], [t1].[LastName], [t0].[JobTitle]
FROM [HumanResources].[Employee] AS [t0]
INNER JOIN [Person].[Person] AS [t1] ON
[t1].[BusinessEntityID] = [t0].[BusinessEntityID]
那么我的orderby查询发生了什么?
我通过以下查询进一步迈出了这一步,发现Guid.NewGuid()
它只被调用了一次。
(from r in (from t in Employees
select new {t.Person.FirstName,t.Person.LastName,t.JobTitle,
g = Guid.NewGuid()})
orderby r.g
select r)
这产生了以下SQL查询
-- Region Parameters
DECLARE @p0 UniqueIdentifier = '68ad5016-19ca-4e31-85c3-1d45618ea8c9'
-- EndRegion
SELECT [t2].[FirstName], [t2].[LastName], [t2].[JobTitle]
FROM (
SELECT [t1].[FirstName], [t1].[LastName], [t0].[JobTitle], @p0 AS [value]
FROM [HumanResources].[Employee] AS [t0]
INNER JOIN [Person].[Person] AS [t1] ON
[t1].[BusinessEntityID] = [t0].[BusinessEntityID]
) AS [t2]
ORDER BY [t2].[value]
知道发生了什么吗?
我相信问题是由直接查询数据库(而不是创建自己的EF连接)时LinqPad创建DBContext(或内部执行的任何操作)引起的。如果我运行此命令:
using (var context = new MyContext()) {
var query =
from x in context.MyTable
select new {
x.ID,
g = Guid.NewGuid()
};
}
我得到以下SQL
SELECT
[Extent1].[ID] AS [ID],
NEWID() AS [C1]
FROM [dbo].[MyTable] AS [Extent1]
这将导致每一行的唯一GUID。您可以将Linq更改为,orderby Guid.NewGuid()
然后将获得所需的随机排序。
var query =
from x in context.MyTable
orderby Guid.NewGuid()
select new {
x.ID
};
问题内容: 我正在使用这个简单的查询来对ms-access数据库使用随机排序: 当我使用Microsoft Access 2010测试它时,它工作正常 但是,当我使用经典asp调用此查询时,随机排序不起作用。 这是我的代码: 问题答案: 您只需要对随机生成器“加盐”即可:
本章介绍 Windows 容器异常的排错方法。 Windows Pod 一直处于 ContainerCreating 状态 一般有两种可能的原因 Pause 镜像配置错误 容器镜像版本与 Windows 系统不兼容。注意在 Windows Server 1709 上面需要使用 1709 标签的镜像,比如 microsoft/aspnet:4.7.1-windowsservercore-1709 m
本章介绍持久化存储异常(PV、PVC、StorageClass等)的排错方法。 一般来说,无论 PV 处于什么异常状态,都可以执行 kubectl describe pv/pvc <pod-name> 命令来查看当前 PV 的事件。这些事件通常都会有助于排查 PV 或 PVC 发生的问题。 kubectl get pv kubectl get pvc kubectl get sc kubectl
本章介绍 Pod 运行异常的排错方法。 一般来说,无论 Pod 处于什么异常状态,都可以执行以下命令来查看 Pod 的状态 kubectl get pod <pod-name> -o yaml 查看 Pod 的配置是否正确 kubectl describe pod <pod-name> 查看 Pod 的事件 kubectl logs <pod-name> [-c <container-name>]
Kubernetes 集群以及应用排错的一般方法,主要包括 Pod 运行异常的排错方法 集群状态异常排错方法 网络异常的排错方法 持久化存储(PV)异常的排错方法 云平台异常的排错方法 Windows 容器异常的排错方法 在排错过程中,kubectl 是最重要的工具,通常也是定位错误的起点。这里也列出一些常用的命令以供参考。 查看 Pod 状态以及运行节点 kubectl get pods -o
本章主要介绍在 Kubernetes 排错中常用的工具。 必备工具 kubectl:用于查看 Kubernetes 集群状态 journalctl:用于查看 Kubernetes 组件日志 iptables:用于排查 Service 是否工作 tcpdump:用于排查容器网络问题 sysdig sysdig 是一个容器排错工具,提供了开源和商业版本。对于常规排错来说,使用开源版本即可。 除了 sy