Неверное имя объекта «dbo.AspNetUsers», отображаемое при размещении приложения - PullRequest
0 голосов
/ 08 января 2019

Я работаю над мультитенантным приложением ASP.NET MVC. У меня есть основная база данных, содержащая информацию для всех арендаторов, и у каждого Клиента будет своя собственная база данных для личных транзакций.

Основная база данных сгенерировала таблицы ASP.net для идентификации / входа и таблицу с именем tb_CustomerAccount.

В таблице dbo.ASPNetUsers я добавил столбец AppUserID, который является внешним ключом таблицы tb_CustomerAccount.

эта таблица имеет поля AppUserID, DatabaseName, SQL_Server, Идентификатор пользователя, Пароль

когда пользователь входит в систему, система идентифицирует пользователя и ищет его базу данных и подключает пользователя к интерфейсу приложения.

теперь это прекрасно работает на моем локальном компьютере, но когда я размещаю приложение, я получаю сообщение об ошибке «Неверное имя объекта« dbo.AspNetUsers »». При устранении неполадок, похоже, что при входе в учетную запись используется база данных демо-арендатора, а не основная база данных, и я не знаю, почему это так,

private Master_DatabaseEntities db = new Master_DatabaseEntities();
[Authorize]
public ActionResult Index()
{
    string userID;
    string CustomerDatabase;
    long CusID;
    userID = Convert.ToString(User.Identity.GetUserId());
    AspNetUser aspNetUser = db.AspNetUsers.Find(userID);
    CusID = Convert.ToInt64(aspNetUser.CustomerID);
    LogIn_userID = aspNetUser.Id;
    CustomerName = aspNetUser.ussCustomerAccount.Name;
    CustomerDatabase = aspNetUser.ussCustomerAccount.Database;
    ussCustomerAccount ussCustomerAccount = db.ussCustomerAccounts.Find(CusID);
    var db_Connection_Details = new DynamicModel.DataContext(ussCustomerAccount.Server, ussCustomerAccount.Database, ussCustomerAccount.User, ussCustomerAccount.Password);
    return View();
}

DbContext:

public class DataContext : DbContext
{
    public DataContext(string server, string database, string user, string password)
      : base ("metadata=res://*/Models.DemoCompanyDB.csdl|res://*/Models.DemoCompanyDB.ssdl|res://*/Models.DemoCompanyDB.msl;provider=System.Data.SqlClient;provider connection string='data source=" + server + ";initial catalog=" + database + ";user id=" + user + ";password=" + password + ";MultipleActiveResultSets=True;App=EntityFramework'")
    {
    }

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

    public virtual DbSet<xxx> xxx
    {
        get;
        set;
    }

    public virtual DbSet<xxx> xxx
    {
        get;
        set;
    }

    public virtual DbSet<xxx> xxx
    {
        get;
        set;
    }

1 Ответ

0 голосов
/ 08 января 2019

Проблема была со строкой соединения Master_Database. строка подключения указывала на DemoCompany вместо Master_Database, как указано @ MohsinMehmood.

Надеюсь, это поможет кому-то с подобной задачей. спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...