c# - Entity Framework 和 MySQL 的随机顺序

标签 c# mysql entity-framework

总结:我想找到一种使用 Entity Framework 和 MySQL 进行随机排序的方法(这很重要)。该解决方案不应使用原始 sql 查询或在从数据库加载所有值后进行排序。

我尝试过的:

我想到使用 NewGuid() 从 that answer 随机排序.

代码:

var query = from e in context.Table
orderby Guid.NewGuid()
select e;
var test = query.FirstOrDefault();

总是抛出异常:

An error occurred while executing the command definition. See the inner exception for details.
Inner exception:
FUNCTION MyDatabase.NewGuid does not exist System.Exception {MySql.Data.MySqlClient.MySqlException}

看来问题是 MySQL 没有函数 NewGuid()。

如何通过 MySQL 函数 RAND() 而不是 NewGuid() 进行排序。也就是说,如何在Entity Framework中使用自定义函数RAND

最佳答案

Seems that problem is that MySQL doesn't have function NewGuid().

叫我懒惰,但问题似乎是 MySql 没有一个名为 NewGuid 的函数。那么最简单的解决方案不是在 MySql 中创建一个名为 NewGuid 的函数吗?

DELIMITER $$
CREATE DEFINER=`root`@`localhost` FUNCTION `NewGuid`() RETURNS char(36)
BEGIN
RETURN UUID();
END$$
DELIMITER ;

创建 MySQL NewGuid 函数后问题就解决了。

编辑:问题指出“解决方案不应使用原始 sql 查询”,这不需要原始 SELECT/INSERT 语句。不过,它确实需要创建数据库函数。

额外说明:我认为这在技术上是 MySQL 实现中的一个错误。 Canonical Functions据说微软“支持所有数据提供商”。 NewGuid 列在 Other Canonical Functions

关于c# - Entity Framework 和 MySQL 的随机顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20714933/

相关文章:

c# - 比较两个 utf-8 编码字符串的 byte[] 是否与比较两个 unicode 字符串相同?

c# - MEF - 将默认创建策略更改为 NonShared

c# - MVC 模型绑定(bind)问题 - 对象列表

mysql - 查询以使用键和至少一个好行为行填充缺失的非规范化列值?

mysql - Unix Shell 脚本 : Reading and working with MySQL Rows line by line

c# - 安全访问部分属性

c# - EventHubTrigger EventData[] 绑定(bind)不起作用

asp.net - 连接到数据库时出现问题 - 用户实例和 Entity Framework 问题

asp.net-mvc - 即使我可以访问 ASP.NET 4.5 中的数据库,查询也不会返回任何数据

MySQL语句分别查询每个结果