c# - Mysql Entity Framework 上的 Guid 属性

标签 c# mysql entity-framework asp.net-core

我在 ASP.NET Core 应用程序上使用 Entity Framework 和 MySql 扩展。我的域模型之一 Message 具有 Guid 属性,当我想对我的 DbContext 执行任何操作时,我收到错误消息:属性“Message.ID”的类型为“Guid”当前的数据库提供程序不支持。更改属性 CLR 类型或为其手动配置数据库类型。

如何“手动配置数据库类型”?我读到它应该映射为 CHAR(36),但我找不到如何在应用程序端执行此操作。

@更新

当我将属性 [Column(TypeName = "char(32)")] 设置为 Guid 属性时,错误仍然存​​在。

这个方法也不行

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
  var messageEntity = modelBuilder.Entity< Message>();
  messageEntity.Property(x => x.ID).
   HasAnnotation("Column", new { TypeName = "char(32)" });
}

最佳答案

我遇到了这个问题,我是这样解决的:

  1. 我从我的项目中删除了 MySql.Data.EntityFrameworkCore

  2. 我安装了 Pomelo.EntityFrameworkCore.MySql通过 Nuget 和这个 数据提供者正确映射了 Guid

  3. 我将方法名称 UseMySQL 更改为 UseMySql 并在 Startup.cs< 添加了 using Microsoft.EntityFrameworkCore;/:


services.AddDbContext<MyDbContext>(options =>               
options.UseMySql(Configuration.GetConnectionString("MyContext")));

请记住确保 Guid 是数据库中的数据类型 char(36)

关于c# - Mysql Entity Framework 上的 Guid 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45120152/

相关文章:

c# - 如何识别匿名函数

c# - 如何搭建 PostgreSQL + Entity Framework ?

c# - 在 C# 中挂起主进程

mysql - 全文搜索的反面是什么?

php - 如果第一行不为空,如何将值插入到第二行?数据库

c# - 无法在 Entity Framework 6 中一对一映射

c# - 如何删除刚刚上传到服务器但仍被服务器锁定的文件?

.net - 生成数据库 - 没有执行 SQL 选项?

entity-framework - EF 迁移控制日志记录 SQL

php - 必填字段缺少 json/android