none
Entity Framework - MSSQL + MySQL nimmt nur den MySQL-Context

    Allgemeine Diskussion

  • Hallo zusammen,

    folgendes Problem. Ich versuche Daten aus einer MySQL-DB per EF zu lesen, das klappt auch. Diese Daten möchte ich dann in eine MSSQL-DB schreiben. Wenn ich aber die MSSQL-DB ansprechen will, dann wird in diese die Konfiguration vom MySQL geladen.

    Hier mal die App.config:

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <configSections>
        <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
        <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=XXX" requirePermission="false" />
      </configSections>
      <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2" />
      </startup>
      <system.data>
        <DbProviderFactories>
          <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient.EF6" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory,MySql.Data, Version=6.8.1.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        </DbProviderFactories>
      </system.data>
      <connectionStrings>
        <add name="RemoteDb" providerName="MySql.Data.MySqlClient.EF6" connectionString="server=XXX;userid=XXX;password=XXX;database=XXX;persistsecurityinfo=True" />
        <add name="LocalContext" providerName="System.Data.SqlClient" connectionString="Data Source=XXX;Initial Catalog=XXX;Integrated Security=True;"  />
      </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.EF6" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.11.0, Culture=neutral, PublicKeyToken=XXX"></provider>
        </providers>
      </entityFramework>
    </configuration>

    Hier mal die RemoteContext-Klasse:

    using System.Data.Entity;
    using MySql.Data.Entity;
    using ZmbExtract.Models;
    
    namespace ZmbExtract.Context
    {
        [DbConfigurationType(typeof(MySqlEFConfiguration))]
        public class RemoteContext : DbContext
        {
            public virtual DbSet<RemoteData> RemoteData { get; set; }
            public RemoteContext() : base("RemoteDb")
            {
                
            }
        }
    }
    

    Die LocalContext-Klasse:

        public class LocalContext : DbContext
        {
            public LocalContext()
                : base("name=LocalContext")
            {
                
            }
    
            public DbSet<RemoteData> RemoteData { get; set; }
    
            protected override void OnModelCreating(DbModelBuilder modelBuilder)
            {
                modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
            }
    
        }

    Das Stück aus der Programm.cs wo es ausgeführt werden soll:

    List<RemoteData> _remoteDataList = null;
                using (RemoteContext db = new RemoteContext())
                {
                    _remoteDataList = db.RemoteData
                        .Where(x => x.Id > LastIndex)
                        .ToList();
                }
    
                using (LocalContext localDb = new LocalContext())
                {
                    foreach (RemoteData data in _remoteDataList)
                    {
                        localDb.RemoteData.Add(data);
                    }
    
                    localDb.SaveChanges();
                }

    Hat das vielleicht schon mal jemand gehabt oder kann mir bei dem Problem helfen?

    Vielen Dank vorab schonmal!

    Donnerstag, 8. März 2018 11:32

Alle Antworten

  • Hallo Joerg-ramom,

    Ich hoffe, dass die SetInitializer-Methode oder die Add-Methode hilfreich sein wird? Weitere Informationen enthält folgender Thread:
    Use MySQL and MSSQL in Entity Framework 6

    Gruß,

    Ivan Dragov


    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Freitag, 9. März 2018 10:48
    Moderator
  • Hallo Ivan,

    das hatte ich bereits schon gefunden und auch eingesetzt, hat das Problem aber leider nicht gelöst.

    Gruß

    Jörg

    Montag, 12. März 2018 14:20