Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Konektor MySql 6.8.2 RC, Entity Framework 6 dan Kode Pertama

Saya memiliki MySQL EF6 dan Migrasi dan bekerja ketika semuanya dalam satu proyek MVC. Saya membaginya menjadi beberapa lapisan (Inti[Antarmuka/Entitas], Data, Layanan, dan Web) dan mulai mendapatkan kesalahan yang sama yang disebutkan Loren.

Menemukan bahwa itu tidak mengambil string koneksi dari aplikasi MVC. Ternyata yang harus saya lakukan hanyalah membuat ulang string koneksi dalam App.config di proyek Data saya (tempat DbContext dan pemetaan berada).

Ini adalah langkah-langkah yang saya ambil untuk membuat semuanya berfungsi:

Langkah 1) Gunakan NuGet untuk mengimpor MySql.Data.Entities (versi saat ini pada posting ini adalah 6.8.3.0)

Langkah 2) Tambahkan yang berikut ini ke App.config dan/atau 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>

Langkah 3) Siapkan DbContext Anda untuk menggunakan 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);
        }
    }
}

Langkah 4) Setel Proyek Default ke proyek Data Anda di Konsol Pengelola Paket

Langkah 5) Gunakan enable-migrations , add-migration , update-database seperti biasanya



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa cara terbaik untuk mengelola tanggal di PHP, MySQL, dll?

  2. Mysql menghitung jumlah kecocokan regex per bidang

  3. Menggunakan Hitungan untuk menemukan jumlah kemunculan

  4. Cara Mengaktifkan SSL/TLS untuk MySQL di Ubuntu

  5. Mengonversi string ke format stempel waktu MySQL di php