在托管应用程序时显示无效的对象名称“ dbo.AspNetUsers”

时间:2019-01-08 05:12:25

标签: asp.net-mvc entity-framework iis

我正在研究多租户ASP.NET MVC应用程序。 我有一个主数据库数据库,其中保存着所有租户的信息,然后每个客户都将拥有用于其个人交易的自定义数据库。

主数据库已为身份/登录生成了ASP.net表和名为tb_CustomerAccount的表。

在dbo.ASPNetUsers表中,我添加了一个名为AppUserID的列,该列是tb_CustomerAccount表的外键。

此表具有以下字段 AppUserID, 数据库名称, 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 :(得分:0)

问题出在Master_Database连接字符串。 连接字符串指向DemoCompany而不是@MohsinMehmood指示的Master_Database。

希望这会帮助完成类似任务的人。 谢谢