Norbert F.D. Ответов: 1

Две базы данных в одном проекте ASP.NET MVC


Я не знаю, как использовать две разные базы данных в одном проекте. ASP.NET MVC

Что я уже пробовал:

У меня есть такая структура:
Ссылка

Я использую два разных контекста.

Контекст Firs, код PGDbContext. cs:
namespace Inspeccions.Models
{
    public class PGDbContext : DbContext
    {
        public PGDbContext() : base( "ActivitatsEntities") { }
        public virtual DbSet<activitats_activitat> Usr { get; }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            throw new UnintentionalCodeFirstException();
        }
    }
}


Модельные особенности.Контексте.CS коде :
namespace Inspeccions.Models
{
    using System;
    using System.Data.Entity;
    using System.Data.Entity.Infrastructure;

    public partial class InspeccionsEntities : DbContext
    {
        public InspeccionsEntities()
            : base("name=InspeccionsEntities")
        {
        }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            throw new UnintentionalCodeFirstException();
        }

        public virtual DbSet<Criteri> Criteris { get; set; }
        public virtual DbSet<CriterisInspeccio> CriterisInspeccios { get; set; }
        public virtual DbSet<CriterisTipusInspeccio> CriterisTipusInspeccios { get; set; }
        public virtual DbSet<Inspeccio> Inspeccios { get; set; }
        public virtual DbSet<TipusInspeccio> TipusInspeccios { get; set; }
        public virtual DbSet<Usuari> Usuaris { get; set; }
    }
}


Веб.код конфигурации :
<connectionStrings>
    <add name="ActivitatsEntities" connectionString="Server=***;port=5432;Database=sitsalt;     User Id=***;Password=***" providerName="Npgsql" />
  <add name="InspeccionsEntities" connectionString="metadata=res://*/Models.ModelInspeccions.csdl|res://*/Models.ModelInspeccions.ssdl|res://*/Models.ModelInspeccions.msl;provider=System.Data.SqlClient;provider connection string="data source=SLTPANOLI;initial catalog=Inspeccions;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" /></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="Npgsql" type="Npgsql.NpgsqlServices, EntityFramework6.Npgsql" />
    </providers>
  </entityFramework>
  <system.data>
    <DbProviderFactories>
      <add name="Npgsql Data Provider" invariant="Npgsql" support="FF" description=".Net Framework Data Provider for Postgresql" type="Npgsql.NpgsqlFactory, Npgsql" />
    </DbProviderFactories>
  </system.data>


Код ActivitatsController:
public ActivitatsController()
{
    _context = new PGDbContext();
}

// GET: Activitats
public ActionResult Index()
{
    return View(_context.Usr.ToList());
}


Если я создаю проект только с одним из подключений и контекста, он работает, но когда я помещаю его в тот же проект, ModelInspeccions работает, но PDGbContext возвращает нулевой DbSet...

Кто-нибудь может мне помочь, пожалуйста? Спасибо!

Afzaal Ahmad Zeeshan

Хорошо, но где вы настраиваете обе базы данных? Как правило, он работает просто идеально, нет никаких проблем в использовании нескольких баз данных. Вам просто нужно настроить, какой контекст куда идет и откуда читается.

Кроме того, взгляните на Единица работы и шаблон репозитория подробнее об этом.

1 Ответов

Рейтинг:
2

Passion4Code

Привет,

Пожалуйста, перейдите по ссылке ниже. Для двух разных баз данных необходимо иметь связанные серверы.

Связанных Серверов (СУБД) Майкрософт Документы[^]

Спасибо