c# - 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”?
解决方案
推荐阅读
- javascript - 正则表达式完全匹配一个单词但接受一个字母的错误
- android - 领域仅在重新打开应用程序后才创建插入的对象
- angular - Angular 6 中的 HTTP 获取调用
- vba - VBA:查找后,FindNext 工作几次,然后运行时错误“380”
- node.js - 简单的控制台菜单
- c# - VSTS 中的集成测试
- rabbitmq - 即使设置了 cookie,RabbitMQ 身份验证也会失败
- angular - 使用外部 Sharepoint 文件 URL 下载 Ionic 3 文件
- javascript - 切换到相对位置
- user-interface - 没有 OpenGL / DirectX 的 2D 图形作为 GUI 工具包