Mysql
 sql >> база данни >  >> RDS >> Mysql

MySql Connector 6.8.2 RC, Entity Framework 6 и Code First

Имах MySQL EF6 и миграции и работех, когато всичко беше в един MVC проект. Разделих го на слоеве (Core[Interfaces/Entitites], Data, Services и Web) и започнах да получавам същата грешка, спомената от Лорен.

Разбрах, че не улавя низа за връзка от приложението MVC. Оказа се, че всичко, което трябваше да направя, беше да създам отново низа за връзка в App.config в моя проект Data (където се намират DbContext и съпоставянията).

Това са стъпките, които предприех, за да заработя всичко:

Стъпка 1) Използвайте NuGet, за да импортирате MySql.Data.Entities (текущата версия към тази публикация е 6.8.3.0)

Стъпка 2) Добавете следното към App.config и/или Web.config :

<connectionStrings>
    <add name="MyDB" providerName="MySql.Data.MySqlClient" connectionString="Data Source=localhost; port=3306; Initial Catalog=mydb; uid=myuser; pwd=mypass;" />
  </connectionStrings>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
      <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.8.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider>
    </providers>
  </entityFramework>

Стъпка 3) Настройте своя DbContext да използва MySql:

using MyApp.Core.Entities.Directory;
using MyApp.Data.Mapping;
using System.Data.Entity;

namespace MyApp.Data
{
    [DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
    public class MyContext : DbContext
    {
        public MyContext() : this("MyDB") { }
        public MyContext(string connStringName) : base(connStringName) {}
        static MyContext ()
        {
            // static constructors are guaranteed to only fire once per application.
            // I do this here instead of App_Start so I can avoid including EF
            // in my MVC project (I use UnitOfWork/Repository pattern instead)
            DbConfiguration.SetConfiguration(new MySql.Data.Entity.MySqlEFConfiguration());
        }

        public DbSet<Country> Countries { get; set; }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            // I have an abstract base EntityMap class that maps Ids for my entities.
            // It is used as the base for all my class mappings
            modelBuilder.Configurations.AddFromAssembly(typeof(EntityMap<>).Assembly);
            base.OnModelCreating(modelBuilder);
        }
    }
}

Стъпка 4) Задайте проекта по подразбиране на вашия проект с данни в конзолата на мениджъра на пакети

Стъпка 5) Използвайте enable-migrations , add-migration , update-database както обикновено правите



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Защо арабските букви не се вмъкват в базата данни?

  2. Дизайн на база данни за приложения, използващи хештагове

  3. неуспешно отваряне на поток:няма такъв файл или директория

  4. Изберете записи от днес, тази седмица, този месец php mysql

  5. PyMySQL не може да се свърже с MySQL на localhost