1

SQL Server データベースで開発し、MySql を運用に使用したいと考えています。

SSMS ダイアグラムを使用してデータベースを作成し、ASP.NET MVC プロジェクトで ADO.NET エンティティ モデルを生成しました。次に、Sql Server からの接続文字列を変更して MySql Server を指すようにし、特に MySqlConnection オブジェクトを DbContext に渡しました。今、私は以下のコードを実行しようとしていますが、提供された基になる接続が .NET Sql Server 接続タイプではないことを訴えています。

dbContext.CreateDatabase();
4

2 に答える 2

1

web.config では、次のことを行う必要があります。

  • MySQL のプロバイダー ファクトリを追加します (上記を参照)。
  • providerName 属性がそれに応じて設定されている接続文字列を変更する(または新しいものを作成する)(次のようなもの)<add name="NorthwindEntities" connectionString="metadata=NorthwindModel;provider=MySQL Data Provider;provider connection string="Data Source=.\SQLExpress;Initial Catalog=Northwind;Integrated Security=True"" providerName="System.Data.EntityClient"/>

これらの変更に加えて、2 つの SSDL ファイルが必要です。1 つは Sql Server 用で、もう 1 つは MySQL 用です。これらのファイルは、使用するストアに固有です。それらは、ストアが理解する型を使用するだけでなく、プロバイダー固有の情報も持っています ({中かっこ} で囲みました。申し訳ありませんが、私の Sql のプロバイダー マニフェスト トークンの例はわかりません)。

<Schema Namespace="NorthwindEFModel.Store" Alias="Self" xmlns="http://schemas.microsoft.com/ado/2009/11/edm/ssdl"
    Provider="{MySQL Data Provider}" ProviderManifestToken="{Provider manifest token}">

最初にコードを使用すると、手間が省けると思います。コード (クラス + DbContext.OnModelCreating()) を使用してモデルを作成し、場合によっては構成し、EF にデータベースを作成させます。接続文字列 (この場合、エンティティ接続文字列ではなく「通常の」接続文字列) に応じて、Sql Server または MySQL と通信し、それに応じてデータベースを作成します。

于 2012-05-04T19:30:42.890 に答える
1

g ファイルのSystem.Data一部にMySql を追加する必要があります。web.confi

   <system.data>
            <DbProviderFactories>
                    <clear />
                    <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.4.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
            </DbProviderFactories>
    </system.data>

Mysql.Data ライブラリのバージョン 6.4.4.0 を使用していることに注意してください。別のバージョンを使用している場合は、それを更新する必要があります。

于 2012-05-04T16:41:42.457 に答える