杨中科 EFCORE 第五部分 同样的Linq 被不同数据据翻译为不同SQL

这篇具有很好参考价值的文章主要介绍了杨中科 EFCORE 第五部分 同样的Linq 被不同数据据翻译为不同SQL。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

同样的LINQ 被翻译为不同的SQL 语句

不同数据库方言不同

SOLServer: select top(3) * from t
MySOL: select * from t LIMIT 3
Oracle: select * from t where ROWNUM<=3

同样的C#语句在不同数据库中被EF Core翻译成不同的SQL语句

EF CORE迁移脚本和数据库相关

杨中科 EFCORE 第五部分 同样的Linq 被不同数据据翻译为不同SQL,ASP.NET,linq,sql,c#

因此迁移脚本不能跨数据库。
通过给Add-Migration命令添加“-OutputDir”参数的形式来在同一个项目中为不同的数据库生成不同的迁移脚本。本节简化为建不同项目

SOLSERVER项目中测试

var books = ctx.Books.Where(b=>b.PubTime.Year>2010).Take(3)foreach(var b in books)
Console.WriteLine(b.Title)

示例:
杨中科 EFCORE 第五部分 同样的Linq 被不同数据据翻译为不同SQL,ASP.NET,linq,sql,c#
杨中科 EFCORE 第五部分 同样的Linq 被不同数据据翻译为不同SQL,ASP.NET,linq,sql,c#
杨中科 EFCORE 第五部分 同样的Linq 被不同数据据翻译为不同SQL,ASP.NET,linq,sql,c#
运行结果:
杨中科 EFCORE 第五部分 同样的Linq 被不同数据据翻译为不同SQL,ASP.NET,linq,sql,c#
测试程序:
杨中科 EFCORE 第五部分 同样的Linq 被不同数据据翻译为不同SQL,ASP.NET,linq,sql,c#
增加日志打印
杨中科 EFCORE 第五部分 同样的Linq 被不同数据据翻译为不同SQL,ASP.NET,linq,sql,c#
运行结果:
杨中科 EFCORE 第五部分 同样的Linq 被不同数据据翻译为不同SQL,ASP.NET,linq,sql,c#

取出最多前三条

杨中科 EFCORE 第五部分 同样的Linq 被不同数据据翻译为不同SQL,ASP.NET,linq,sql,c#
运行结果
杨中科 EFCORE 第五部分 同样的Linq 被不同数据据翻译为不同SQL,ASP.NET,linq,sql,c#

MYSQL项目中测试

1、EF Provider的选择
杨中科 EFCORE 第五部分 同样的Linq 被不同数据据翻译为不同SQL,ASP.NET,linq,sql,c#
2、Install-Package Pomelo.EntityFrameworkCore.MySql
3、optionsBuilder.UseMySql(“server=localhost;user=root;password-root;database=ef”,
new MySqlServerVersion(new Version(5,60)));

示例:
下载安装包
杨中科 EFCORE 第五部分 同样的Linq 被不同数据据翻译为不同SQL,ASP.NET,linq,sql,c#
不指定版本 ,让nuget指定选择最合适的版本
杨中科 EFCORE 第五部分 同样的Linq 被不同数据据翻译为不同SQL,ASP.NET,linq,sql,c#

配置本地mysql 配置文件
杨中科 EFCORE 第五部分 同样的Linq 被不同数据据翻译为不同SQL,ASP.NET,linq,sql,c#
验证sqlsever 的脚本能否跑在mysql中
杨中科 EFCORE 第五部分 同样的Linq 被不同数据据翻译为不同SQL,ASP.NET,linq,sql,c#
杨中科 EFCORE 第五部分 同样的Linq 被不同数据据翻译为不同SQL,ASP.NET,linq,sql,c#
部分语法相同的 创建成功了
杨中科 EFCORE 第五部分 同样的Linq 被不同数据据翻译为不同SQL,ASP.NET,linq,sql,c#
证明迁移脚本 并不能跨数据库执行

直接删除之前的sqlsever migrations文件
杨中科 EFCORE 第五部分 同样的Linq 被不同数据据翻译为不同SQL,ASP.NET,linq,sql,c#
执行Add-Migrations Init 重新生成脚本
杨中科 EFCORE 第五部分 同样的Linq 被不同数据据翻译为不同SQL,ASP.NET,linq,sql,c#
杨中科 EFCORE 第五部分 同样的Linq 被不同数据据翻译为不同SQL,ASP.NET,linq,sql,c#
只修改了mydbcontext文件的连接字符串

运行
不同点
杨中科 EFCORE 第五部分 同样的Linq 被不同数据据翻译为不同SQL,ASP.NET,linq,sql,c#

POSTGRESOL项目中测试

Instal1-Package Npgsql.EntityFrameworkCore.PostgreSQl
optionsBuilder.UseNpgsql(“Host=127.0.0.1;Database=ef;Username=postgres;Password=123456”);

杨中科 EFCORE 第五部分 同样的Linq 被不同数据据翻译为不同SQL,ASP.NET,linq,sql,c#
同样不指定版本
杨中科 EFCORE 第五部分 同样的Linq 被不同数据据翻译为不同SQL,ASP.NET,linq,sql,c#
配置数据库 连接字符串
杨中科 EFCORE 第五部分 同样的Linq 被不同数据据翻译为不同SQL,ASP.NET,linq,sql,c#
删除之前mysql的 Migrations 文件
杨中科 EFCORE 第五部分 同样的Linq 被不同数据据翻译为不同SQL,ASP.NET,linq,sql,c#
执行命令
杨中科 EFCORE 第五部分 同样的Linq 被不同数据据翻译为不同SQL,ASP.NET,linq,sql,c#
杨中科 EFCORE 第五部分 同样的Linq 被不同数据据翻译为不同SQL,ASP.NET,linq,sql,c#
查看数据库
杨中科 EFCORE 第五部分 同样的Linq 被不同数据据翻译为不同SQL,ASP.NET,linq,sql,c#
SQL
杨中科 EFCORE 第五部分 同样的Linq 被不同数据据翻译为不同SQL,ASP.NET,linq,sql,c#文章来源地址https://www.toymoban.com/news/detail-809439.html

到了这里,关于杨中科 EFCORE 第五部分 同样的Linq 被不同数据据翻译为不同SQL的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据结构与算法教程,数据结构C语言版教程!(第五部分、数组和广义表详解)三

    数组和广义表,都用于存储逻辑关系为“一对一”的数据。 数组存储结构,99% 的编程语言都包含的存储结构,用于存储不可再分的单一数据;而广义表不同,它还可以存储子广义表。 本章重点从矩阵的角度讨论二维数组的存储,同时讲解广义表的存储结构以及有关其广度和

    2024年01月21日
    浏览(40)
  • 数据结构与算法教程,数据结构C语言版教程!(第五部分、数组和广义表详解)五

    数组和广义表,都用于存储逻辑关系为“一对一”的数据。 数组存储结构,99% 的编程语言都包含的存储结构,用于存储不可再分的单一数据;而广义表不同,它还可以存储子广义表。 本章重点从矩阵的角度讨论二维数组的存储,同时讲解广义表的存储结构以及有关其广度和

    2024年01月23日
    浏览(37)
  • 同样的代码不同环境 提示握手失败:ssl_client_socket_impl.cc handshake failed

    首先  同样的脚本环境(代码相同,插件版本一样) 在我本机环境windoiws11上运行完全没有问题。 但是 但是 但是!在新安装的windows10环境上报错 ssl_client_socket_impl.cc  handshake failed~ QaQ 有加上这两个条件,但是还是循环报错 脚本直接停止了 chromedriver 版本和 Chrome 的版本也查看

    2024年02月12日
    浏览(74)
  • 【OpenCV入门】第五部分——图像运算

    当计算机处理图像时,有些内容需要处理,有些内容不需要处理。能够覆盖原始图像,仅暴露原始图像“感兴趣区域”(ROI)的模板图像就叫做 掩模 。 掩模 (mask),也叫做掩码,在程序中用二值图像来表示:0值(纯黑)区域表示被遮盖的部分,255值(纯白)区域表示暴露

    2024年02月10日
    浏览(26)
  • Verilog 学习第五节(串口发送部分)

    1:串口通信模块设计的目的是用来发送数据的,因此需要有一个数据输入端口 2:串口通信,支持不同的波特率,所以需要一个 波特率设置端口 3:串口通信的本质就是将8位并行数据通过一根信号线,在不同的时刻传输并行数据的不同位,通过多个时刻,最终将8位并行数据

    2023年04月26日
    浏览(30)
  • ImageJ 用户手册——第五部分(菜单命令Process)

    此菜单列出了与图像处理相关的所有命令,包括多个图像之间的点运算、滤波器和算术运算。 29.1 Smooth 使活动图像或所选内容变暗。该滤波器将每个像素替换为其3×3邻域的平均值。 29.2 Sharpen 增加对比度并突出图像或选择中的细节,但也可能突出噪声。该滤波器使用以下加权

    2023年04月26日
    浏览(29)
  • 【学习笔记】Vue3源码解析:第五部分 - 实现渲染(2)

    课程地址:【已完结】全网最详细Vue3源码解析!(一行行带你手写Vue3源码) 第五部分-:(对应课程的第33 - 35节) 第33节:《讲解组件渲染流程》 1、在 render 函数中拿到虚拟dom vnode后,编写patch函数,它接收3个参数:null、vnode、container,分别代表:上一次的虚拟dom即旧的虚

    2024年04月23日
    浏览(42)
  • 朱长江《偏微分方程简明教程》答案第五章部分(2)

    5.2.1 1、设 L u = u t −

    2024年02月06日
    浏览(27)
  • Nginx详解 第五部分:Ngnix反向代理(负载均衡 动静分离 缓存 透传 )

    什么是正向代理? 正向代理代理的是客户端 。 客户端设备要访问局域网以外的 Internet 时,需在客户端浏览器中配置代理服务器,然后通过代理服 务器来进行访问,将访问到的局域网以外的 Internet 网站内容返回给客户端,而不是通过局域网中的客 户端设备直接访问。 正向

    2024年02月10日
    浏览(42)
  • Vscode快速对比两个文件的不同部分

    打开vscode,打开文件或者文件夹 选中需要对比的文件 按住 ctrl 选择要对比的另一个文件,鼠标右键选择将已选项进行比较 结果如下: 打开文件,点击鼠标右键 命令面板 输入 compare 选择要比较的文件 结果如下 点击扩展,查找 file-compare ,并安装插件 打开文件,鼠标右键,

    2024年02月12日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包