我在 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)" });
}
最佳答案
我遇到了这个问题,我是这样解决的:
我从我的项目中删除了 MySql.Data.EntityFrameworkCore
我安装了 Pomelo.EntityFrameworkCore.MySql通过
Nuget
和这个 数据提供者正确映射了Guid
。我将方法名称
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/