Cyr*_*pta 5 mysql linq-to-entities entity-framework
当我决定在我的新项目中使用OR/M(MySQL的实体框架)时,我希望它能节省我的时间,但我似乎已经失败了(现在第二次).
采用这个简单的SQL查询
SELECT * FROM POST ORDER BY addedOn DESC LIMIT 0, 50
Run Code Online (Sandbox Code Playgroud)
它执行并在不到一秒的时间内给出结果(表格大约有60,000行).
这是我为此编写的等效LINQ To Entities查询
var q = (from p in db.post
orderby p.addedOn descending
select p).Take(50);
var q1 = q.ToList(); //This is where the query is fetched and timed out
Run Code Online (Sandbox Code Playgroud)
但是这个查询从来没有执行它总是超时(没有命令,需要5秒才能运行)!我的超时时间设置为12秒,因此您可以想象它的速度远不止于此.
我重新校准了我的索引,尝试了急切的加载(即使没有orderby子句,它实际上也会失败)
请帮助,我即将放弃OR/M for MySQL作为一个失败的原因.
我所有的研究最终得出这样的结论:虽然 EF 一般来说对性能不利,但 MySql+EF 却是彻头彻尾的劣质。SO 选择 L2S 而不是 EF 是一个很好的举措,如果我能够访问 MS Sql 数据库而不是 MySQL,我也会朝这个方向发展。
不幸的是,我一直使用 MySql,因为它是免费的,这迫使我放弃 EF。我现在又回到了对 SQL 查询进行硬编码的旧的、经过测试的、高效的方法,结果很好。
我给了 MYSql + EF 一个通行证,但我很想听到在一个不平凡的项目中成功使用它的人的声音。
| 归档时间: |
|
| 查看次数: |
4252 次 |
| 最近记录: |