2012-05-04 14 views
1

SQL Serverデータベースを開発し、実稼働環境としてMySqlを使用したいと考えています。SQL Server 2008 R2とConnect to MySQLを使用してADO.NET Entity Frameworkを生成

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

dbContext.CreateDatabase(); 

答えて

1

:(上図のように)

  • のMySQLのプロバイダファクトリを追加providerNameで属性が適切に設定された場合、あなたの接続文字列を変更(または新規作成)あなたは2つのSSDLファイル持っている必要があり、これらの変更の上に<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"/>

のような(何か - 。SQL Serverの場合で1とMySQLのためにあるものをこれらのファイルは、使用するストアに固有のもので彼らだけではない使用。ストアインパルタのタイプ私はあなたがあればあなたには、いくつかの手間を節約することができると思い

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

:NDSはなく、プロバイダ固有の情報(私は{中括弧}に入れて、申し訳ありませんが、私は私のSQLの代表的なプロバイダマニフェストトークンを知らない)を持っていますまずコードを使用してください。コード(クラス+ DbContext.OnModelCreating())を使用してモデルを作成し、構成し、EFでデータベースを作成します。接続文字列(この場合は「通常の」接続文字列でエンティティ接続文字列ではありません)に応じて、SQL ServerまたはMySQLのいずれかに話しかけ、それに従ってデータベースを作成します。

+0

ありがとうございました。コードを最初に使用する。他のすべての提案は素晴らしかったですが、Varchar(Max)として機能しませんでした.MySQLで問題が発生していました。 – IsmailS

+0

Entityクラスを手作業で書く必要がなかったので、Code Firstを使用していませんでした。しかし、私は[Entity Framework Power Tools](http://visualstudiogallery.msdn.microsoft.com/72a60b14-1581-4b9b-89f2-846072eff19d)が見つかりました。これは、DBからコードファーストエンティティをリバースエンジニアリングするのに役立ちました – IsmailS

+0

そのため、MySqlのMySql固有のタイプを使用する別個のSSDL。 CodeFirstを使用していてMySql SSDLの様子が不思議であれば、EdmxWriter.WriteEdmxを使ってすべての成果物を含むEDMXファイルを見ることができます。同じモデルの場合、MySqlとSql Serverでそれを行い、/ diffファイルを比較することができます。 – Pawel

1

はあなたのweb.confiグラムファイルのSystem.Data一部にMySQLを追加する必要があります。あなたが別のバージョンを使用している場合

<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を使用していることを、あなたはそれを更新する必要があります。あなたがする必要があるweb.configファイルで

+0

私はこの朝を試してみましょう。 – IsmailS

+0

ありがとうございました。これはうまくいかなかった。 – IsmailS

関連する問題