总结:我想找到一种使用 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/