代码之家  ›  专栏  ›  技术社区  ›  Eric J.

针对多个数据库提供商(每个安装一个)

  •  0
  • Eric J.  · 技术社区  · 4 年前

    我正在迁移一个目前使用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一起使用?

    0 回复  |  直到 4 年前