1

MySql データベースのエンティティ フレームワーク 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>

誰か助けてくれませんか?ありがとう、スティーブン。

4

3 に答える 3

0

DotConnectを新しい7.2.122バージョンにアップグレードすることで問題を解決しました。これで、__ Migrationsテーブルの前にdboがなくても作成されるため、insertステートメントが機能します。

于 2012-11-26T10:19:47.947 に答える
0

移行コンテンツのコード生成には影響しません(コード生成はMicrosoftによって行われます)。移行コードに基づいてDDLを生成します。コードで指定された「dbo」スキーマ名は、DDLを生成するときに無視されます。

于 2012-11-22T11:14:03.867 に答える
0

SetSqlGenerator を呼び出す前に、Singleton 構成オプションを構成してみてください。ジェネレーターがセットアップされたときと同じように現在の設定を使用し、後で変更してもジェネレーターの動作は変わらないという怪しい考えがあります。

于 2012-11-21T22:15:33.657 に答える