c# - MySql 上的 Entity Framework 4.4.0 代码优先迁移不断将 dbo 添加到新表

标签 c# mysql entity-framework-5 entity-framework-migrations devart

我已经为 MySql 数据库设置了 Entity Framework 4.4.0 (EF5) 代码优先迁移,但是当我运行 Add-Migration 命令时,我总是将 dbo 添加到表名前面,如下所示:

    CreateTable(
            "dbo.Fields",
            c => new
                {
                    FieldId = c.Int(nullable: false, identity: true),
                    FieldTypeId = c.Int(nullable: false),
                    Name = c.String(nullable: false, unicode: false),
                    Description = c.String(unicode: false),
                    CodeList = c.String(unicode: false),
                    Mask = c.String(unicode: false),
                })
            .PrimaryKey(t => t.FieldId)
            .ForeignKey("dbo.FieldTypes", t => t.FieldTypeId, cascadeDelete: true)
            .Index(t => t.FieldTypeId);

我正在使用 Devart 数据库提供程序,我的迁移配置类如下所示:

    internal sealed class Configuration : DbMigrationsConfiguration<mydbcontext>
{
    public Configuration()
    {
        // Create a custom connection to specify the database and set a SQL generator for MySql.
        var connectionInfo =
            MySqlConnectionInfo.CreateConnection("<<myconnectionstring>>");

        TargetDatabase = connectionInfo;

        SetSqlGenerator(connectionInfo.GetInvariantName(), new MySqlEntityMigrationSqlGenerator());

        var config = MySqlEntityProviderConfig.Instance;
        config.Workarounds.IgnoreSchemaName = true;

        AutomaticMigrationsEnabled = false;
    }

    protected override void Seed(CloudDataSetDbContext context)
    {

    }
}

出于某种原因,IgnoreSchemaName = true 未被考虑在内。

我将 Devart 数据库提供程序添加到 web.config 文件中,如下所示:

    <system.data>
<DbProviderFactories>
  <remove invariant="Devart.Data.MySql" />
  <add name="dotConnect for MySQL" invariant="Devart.Data.MySql" description="Devart dotConnect for MySQL" type="Devart.Data.MySql.MySqlProviderFactory, Devart.Data.MySql, Version=6.80.350.0, Culture=neutral, PublicKeyToken=09af7300eec23701" />
</DbProviderFactories>

我还添加了一个程序集重定向,因为 Devart 需要这样:

    <dependentAssembly>
    <assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" />
    <bindingRedirect oldVersion="4.3.1.0" newVersion="4.4.0.0" />
  </dependentAssembly>

有人可以帮我吗? 谢谢, 史蒂文。

最佳答案

在调用 SetSqlGenerator 之前尝试配置它们的 Singleton 配置选项。我有一个可疑的想法,即他们将使用当前设置,就像设置生成器时一样,之后更改它们不会改变生成器的行为。

关于c# - MySql 上的 Entity Framework 4.4.0 代码优先迁移不断将 dbo 添加到新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13502214/

相关文章:

c# - 具有约束的泛型方法的重载解析问题

c# - Math.Sqrt(2/3) 返回 0

c# - 在 EF Code First 中过滤导航属性

php - 根据日期显示来自数据库的信息mysql

php - 使用 attr ajax 删除记录

ef-code-first - 如何创建和使用通用类 EntityTypeConfiguration<TEntity>

c# - 实体类型 [Name] 不是当前上下文模型的一部分

c# - 有什么方法可以加速 Entity Framework 中的 CreateIfNotExists 吗?

c# - 如何从 List<RegistryPathData> 中排除项目

mysql - 显示包含最新编辑版本的所有记录