首页 > 解决方案 > Pomelo.EntityFrameworkCore.MySQL DBContext 抛出“Unqualified data type char”异常

问题描述

我正在尝试将现有应用程序从 EF 6 和 MySQL.Data.Entity.EF6 移植到 EF Core 和 Pomelo.EntityFrameworkCore.MySql。

当 DBContext 创建其模型时,它会抛出带有消息“Unqualified data type char”的 ArgumentException。

我可以在全新的控制台项目中重现错误。一旦我将 DBSet<Site> 添加到我的 DBContext(其中 Site 是我现有项目的 Database.Entities dll 中的一个类),就会出现验证错误。

缩写的堆栈跟踪:

   at Pomelo.EntityFrameworkCore.MySql.Storage.Internal.MySqlTypeMappingSource.ValidateMapping(CoreTypeMapping mapping, IProperty property)
   at Microsoft.EntityFrameworkCore.Storage.RelationalTypeMappingSource.FindMappingWithConversion(RelationalTypeMappingInfo& mappingInfo, IReadOnlyList`1 principals)
   ...
   at Microsoft.EntityFrameworkCore.Infrastructure.ModelSource.GetModel(DbContext context, IConventionSetBuilder conventionSetBuilder, IModelValidator validator)
   at Microsoft.EntityFrameworkCore.Internal.DbContextServices.CreateModel()
   ...
   at Microsoft.EntityFrameworkCore.DbContext.get_Model()

现有的类非常简单。它看起来像这样(实际上,Id 是从基类继承的):

public class Site {
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    [Required]
    public string Id { get; set; }

    [Required]
    public string Name { get; set; }

    [ForeignKey("ApplicationId")]
    public virtual Application Application { get; set; }
    [Column("ApplicationId")]
    [Required]
    public string ApplicationId { get; set; }
}

现有 Dll 的编译方式是否会影响这一点?我可以覆盖 OnModelCreating 中的某些内容以避免此错误吗?有什么方法可以进一步了解哪些属性被视为“char”?

标签: c#mysqlentity-frameworkentity-framework-core

解决方案


推荐阅读