我正在迁移一个目前使用SQL Server的EF 6应用程序,可以选择使用MySQL。一个或另一个将用于特定的部署。永远不要两者兼而有之。
我在EF迁移方面遇到了麻烦。我创建了针对SQL Server的迁移代码,然后手动编辑生成的迁移,以应用一些MySQL特定的tweets(例如使用
mediumtext
而不是
varchar(max)
在编译时定义MYSQL时,选择属性(
#if MYSQL
). 然后,当我将应用程序配置更改为目标MySQL并运行
update-database
或者只运行应用程序,创建应用程序的数据库和所有表,但随后抛出异常:
系统。ArgumentException:“基础提供程序不支持类型”nvarchar(max)“。”
请注意,数据类型是特定于SQL Server的,而不是MySQL。异常是在调用以下方法后立即从外部代码(可能是Entity Framework代码)抛出的:
string IMigrationMetadata.Id
{
get { return "202004101817407_S_InitialMigration"; }
}
我的工作假设是,__MigrationHistory和迁移代码文件附带的.resx中的数据模型表示对SQL Server表示进行了编码。
我可以采用什么策略将EF 6和EF Migrations与SQL Server或MySQL一起使用?