Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySql Connector 6.8.2 RC, Entity Framework 6 i Code First

Miałem uruchomiony MySQL EF6 i Migracje, gdy wszystko było w jednym projekcie MVC. Podzieliłem go na warstwy (Rdzeń [interfejsy/podmioty], dane, usługi i sieć) i zacząłem otrzymywać ten sam błąd, o którym wspomniał Loren.

Ustalono, że nie pobiera parametrów połączenia z aplikacji MVC. Okazuje się, że wszystko, co musiałem zrobić, to odtworzyć ciąg połączenia w App.config w moim projekcie Data (gdzie znajdują się DbContext i mapowania).

Oto kroki, które podjąłem, aby wszystko działało:

Krok 1) Użyj NuGet, aby zaimportować MySql.Data.Entities (aktualna wersja tego posta to 6.8.3.0)

Krok 2) Dodaj następujące elementy do App.config i/lub 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>

Krok 3) Skonfiguruj swój DbContext do korzystania z 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);
        }
    }
}

Krok 4) Ustaw projekt domyślny na projekt danych w konsoli menedżera pakietów

Krok 5) Użyj enable-migrations , add-migration , update-database tak jak zwykle



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL - sortuj ciąg znaków oddzielonych przecinkami w kolumnie

  2. MySQL zwraca tylko jeden wiersz

  3. Jak zaktualizować wiele kolumn w MySQL

  4. Jak używać wyzwalacza w MySql do tworzenia klucza obcego?

  5. Symfony3 - SQLSTATE[HY000] [2002] Brak takiego pliku lub katalogu