MSSQL i MySql w jednej aplikacji ASP.NET MVC

0

Witam,

tworzę aplikację z wykorzystaniem technologii ASP.NET MVC. Ze względu na wymogi muszę podpiąć ją pod dwie bazy danych. Jedna z nich to MSSQL, druga MySql.
Warto dodać że wykorzystuję do tego Entity Framework.

Wszystko działa pięknie w momencie gdy próbuję użyć jednej bazy, bez różnicy której. Problem zaczyna się w momencie gdy w jednej akcji chcę pobrać dane z obu tych baz.

W zależności od tego którą z nich użyję jako pierwszą, zapytanie tej drugiej zwraca błąd.

Jeżeli jako pierwszej użyję MSSQL, otrzymam błąd ze strony MySql.

Nie można odnaleźć żądanego dostawcy danych programu .Net Framework. Możliwe, że nie został zainstalowany.

Jeżeli jako pierwszej użyję MySql to MSSQL zwraca błąd

Option not supported.
Nazwa parametru: multipleactiveresultsets

Connection stringi wyglądają mi na prawidłowe i działają w momencie gdy używam tylko jednej z baz w danym momencie. Jakieś porady, sugestie?

0

Chyba masz bałagan w app.config. pokaz.
No i jak chcesz wyciągać dane z w baz?

0

Pokaż te connection stringi, kod tworzenia contextów i kod, który wykonuje operacje na obu bazach.

0

Connection stringi

<add name="NzEntities" connectionString="metadata=res://*/Database.Models.Model.csdl|res://*/Database.Models.Model.ssdl|res://*/Database.Models.Model.msl;provider=System.Data.SqlClient;provider connection string=&quot;Persist Security Info=False;User ID=login;Initial Catalog=katalog;Data Source=ip,2433;password=haslo&quot;" providerName="System.Data.EntityClient" />
    <add name="Database" connectionString="server=localhost;port=3306;database=magazine;uid=root;password=" providerName="MySql.Data.MySqlClient" />

Miejsce wywołania zapytań

        NzEntities _subiekt;
        Database.Database _con;
        public HomeController()
        {
            _subiekt = new NzEntities();
            _con = new Database.Database();
        }

        public ActionResult Index()
        {
            var products = 0;
            var contrahents = 0;

            products = _subiekt.vw_TowaryCennikiSelekcja.Count();
            contrahents = _con.DbContrahents.Count();
            ViewBag.products = products;
            ViewBag.contrahents = contrahents;

            return View();
        }

Contexty

public partial class NzEntities : DbContext
    {
        public NzEntities()
            : base("Name=NzEntities")
        {
        }
    
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            throw new UnintentionalCodeFirstException();
        }
public partial class Database : DbContext
    {
        public Database() : base($"Name=Database")
        {
        }


        public virtual DbSet<Contrahents> DbContrahents { get; set; }

[...]
0

Miałem podobny problem MySql + MsSql + EF, nie do końca pamiętam rozwiązanie, aczkolwiek znalazłem coś ciekawego w moim configu i na 90% to jest to (trzeba dodać do configa):

<configuration>
    <system.data>
       <DbProviderFactories>
         <remove invariant="MySql.Data.MySqlClient"/>
         <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
       </DbProviderFactories>
    </system.data>
</configuration>

zresztą tutaj masz dokładnie opisane jak config powinien wyglądać:
https://dev.mysql.com/doc/connector-net/en/connector-net-entityframework60.html

1 użytkowników online, w tym zalogowanych: 0, gości: 1