Translation of the ‘String.Equals‘ overload with a ‘StringComparison‘ parameter is not supported

#事故现场
  • 使用.net core ef 连接mysql,进行查询操作,报错如下:

The LINQ expression ‘DbSet<Ps_Path>()
.Where(p => p.Mark.Equals(
value: __Substring_0,
comparisonType: OrdinalIgnoreCase))’ could not be translated. Additional information: Translation of the ‘String.Equals’ overload with a ‘StringComparison’ parameter is not supported by default. To opt-in to translations of methods with a ‘StringComparison’ parameter, call EnableStringComparisonTranslations on your MySQL specific ‘DbContext’ options. For general EF Core information about this error, see https://go.microsoft.com/fwlink/?linkid=2129535 for more information. Either rewrite the query in a form that can be translated, or switch to client evaluation explicitly by inserting a call to ‘AsEnumerable’, ‘AsAsyncEnumerable’, ‘ToList’, or ‘ToListAsync’. See https://go.microsoft.com/fwlink/?linkid=2101038 for more information.

  • 开发环境:
    .net core : .NET 5
    mysql : 8.0.25
    mysqlclient包:Pomelo.EntityFrameworkCore.MySql,版本: 5.0
#原因

报错代码:

var path = db.Ps_Path.FirstOrDefault(s =>
                    s.Mark.Equals(fileInfo.RelativePath.Substring(0, 3), StringComparison.OrdinalIgnoreCase));

上面代码使用了比较字符串的StringComparison.OrdinalIgnoreCase参数,Pomelo.EntityFrameworkCore.MySql默认不支持,需要配置DbContext;

#解决方法

配置DbContext的EnableStringComparisonTranslations属性;

 protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
 {
 	var serverVersion = new MySqlServerVersion(new Version(8, 0, 25));
	optionsBuilder.UseMySql(_configuration.GetConnectionString("mysql"), serverVersion, mySqlOptions => mySqlOptions.EnableStringComparisonTranslations(true));
 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值