EF Core对应不同数据库的差异

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

migrationBuilder.CreateTable(
    name: "T_Persons",
    columns: table => new
    {
        Id = table.Column<long>(type: "bigint", nullable: false)
            .Annotation("SqlServer:Identity", "1, 1"),
        Name = table.Column<string>(type: "nvarchar(max)", nullable: false)
    },
    constraints: table =>
    {
        table.PrimaryKey("PK_T_Persons", x => x.Id);
    });

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

同一段代码在不同数据库差生的SQL差异

1、运行代码:

using (MyDBContext dBContext=new MyDBContext())
{
    var persons=dBContext.Persons.Where(b => b.BirthDay.Year == 2008).Take(3);
    foreach (var person in persons)
    {
        Console.WriteLine(person.Name);
    }
}

EF Core对应SQLServer数据库生成的SQL脚本:

SELECT TOP(@__p_0) [t].[Id], [t].[BirthDay], [t].[Height], [t].[Name], [t].[Width]
      FROM [T_Persons] AS [t]
      WHERE DATEPART(year, [t].[BirthDay]) = 2008

EF Core对应MySQL数据库生成的SQL脚本:
1、EF Provider的选择:

MySql.EntityFrameworkCorePomelo.EntityFrameworkCore.MySql
开发者MySQL官方开源社区开发者
是否开源
活跃度近期活跃一直活跃
下载量8633312081234

2、Install-Package Pomelo.EntityFrameworkCore.MySql (注意对应版本,可在Nuget搜索擦看)。
3、optionsBuilder.UseMySql(“server=localhost;user=root;password=root;database=xxx”,new MySqlServerVersion(new Version(8.4.4)));

SELECT `t`.`Id`, `t`.`BirthDay`, `t`.`Height`, `t`.`Name`, `t`.`Width`
      FROM `T_Persons` AS `t`
      WHERE EXTRACT(year FROM `t`.`BirthDay`) = 2008
      LIMIT @__p_0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值