2014-01-02 7 views
2

У меня есть проблема с использованием Entity Framework 6 с MySQL и делает это с помощью модели/базы данных-первых техники в ASP.NET C# MVC 3.Entity Framework 6 и MySQL, модель первого

Текущая ситуация такова, что я получаю сообщение об ошибке:

Keyword not supported. 
Parameter name: metadata 

Метаданные указано в строке соединения в web.config -файла:

<add name="SiteNameContainer" 
    connectionString="metadata=res://*/Models. SiteName.csdl| 
    res://*/Models. SiteName.ssdl| 
    res://*/Models. SiteName.msl; 
    provider=MySql.Data.MySqlClient; 
    provider connection string='server=127.0.0.1; 
    user id=fire;password=fire_db; 
    database=fire_dotnet'" 
    providerName="MySql.Data.MySqlClient" /> 

Я попытался удалить раздел метаданных в connectionString, но затем он говорит, что ключевое слово «поставщик» не поддерживается, а затем «строка подключения поставщика» не поддерживается.

У меня также есть эти 2 раздела в моем файле web.config:

<entityFramework> 
    <providers> 
     <provider invariantName="MySql.Data.MySqlClient" 
      type="MySql.Data.MySqlClient.MySqlProviderServices, 
      MySql.Data.Entity.EF6, Version=6.8.3.0, 
      Culture=neutral, PublicKeyToken=c5687fc88969c44d" /> 
    </providers> 
</entityFramework> 
<system.data> 
<DbProviderFactories> 
    <clear /> 
    <remove invariant="MySql.Data.MySqlClient" /> 
    <add name="MySql.Data.MySqlClient" 
     invariant="MySql.Data.MySqlClient" 
     description=".Net Framework Data Provider for MySQL" 
     type="MySql.Data.MySqlClient.MySqlClientFactory, 
     MySql.Data, Version=6.8.3.0, Culture=neutral, 
     PublicKeyToken=c5687fc88969c44d" /> 
</DbProviderFactories> 
</system.data> 

У меня есть ссылки на MySQL Net-коннектором 6.8.3 файлы (MySql.Data, MySql.Data.Entity.EF6, MySql .Web).

Моих ПРЕДПИСАНИЙ в том, что я должен использовать MySQL и Entity Framework 6 и список изменения для .NET connectior говорит, что 6.8.x добавлена ​​поддержка MySQL.

У меня нет идей, надеюсь, кто-то может мне помочь в этом. Заранее спасибо.

+1

Вы смотрели на http://dev.mysql.com/doc/refman/5.0/en/connector-net-entityframework60.html еще? Пример app.config там значительно отличается от того, что вы разместили. Полное раскрытие: я никогда не использовал EF с MySQL. – Steve

+0

Да, однако я использую первую модель, поэтому мне нужны метаданные –

+0

из любопытства, с которым вы работаете VS? – Noctis

ответ

5

Похоже, что вы можете использовать неправильное имя поставщика в своей строке подключения, это должно быть System.Data.EntityClient.

Вот как я, наконец, получил свою модель-первый код для работы с MySQL и что моя app.config выглядит следующим образом:

<connectionStrings> 
    <add name="MyEntities" 
     connectionString="metadata=res://*/Data.Entity.Model.csdl|res://*/Data.Entity.Model.ssdl|res://*/Data.Entity.Model.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;Data Source=localhost;User Id=dbadmin;Password=password;Initial Catalog=database_name;&quot;" 
     providerName="System.Data.EntityClient"/> 
</connectionStrings> 

В случае, если не работает, вот раздел entityFramework. Вы увидите атрибут codeConfigurationType, который я использовал в следующем разделе. Он добавляет зависимые преобразователи для MySQL, но есть другие способы сделать это, о которых вы можете прочитать в документации MySQL: EF 6 Support.

<entityFramework codeConfigurationType="MySql.Data.Entity.MySqlEFConfiguration, MySql.Data.Entity.EF6"> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"/> 
    <providers> 
    <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6"/> 
    <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer"/> 
    </providers> 
</entityFramework> 
+0

Ага! Только одна строка зафиксировала это для меня '' Спасибо! –

Смежные вопросы