是否可以从代码中首先获取当前连接“table”类?
我正在尝试编写一个MVC多租户应用程序(1个应用程序,很多数据库),我能想到的最简单的方法是在创建dbcontext时传递连接字符串(或租户名称)(我看过其他人)如何做到这一点,但并不真正理解他们)。但是,一旦我进入表类,我就无法访问当前的数据库连接来执行我需要的其他操作。
示例代码
public class ConnectionContext : DbContext
{
public ConnectionContext(String connectionString)
: base(connectionString)
{
if (!this.Database.Exists())
throw new Exception("Database does not exist");
}
public DbSet<Table1> Table1 { get; set; }
}
[Table("Table1")]
public class Table1
{
[Key]
public String Column1 { get; set; }
public String Column2 { get; set; }
public Int32 GetNoOfColumns()
{
using (var conn = new ConnectionContext("???")) // <-- **issue here**
{
//Code to get info
return 0;
}
}
public void Authorize()
{
using (var conn = new ConnectionContext("???")) // <-- **issue here**
{
this.Column2 = "Authorized";
conn.Entry(this).State = EntityState.Modified;
conn.SaveChanges();
}
}
}
答案 0 :(得分:1)
不确定这是否可能与我一样。
答案 1 :(得分:0)
您不必使用连接字符串参数创建构造函数,您可以像这样创建dbcontext类:
public class ConnectionContext : DbContext
{
public ConnectionContext()
: base("nameOrConnectionString")
{
if (!this.Database.Exists())
throw new Exception("Database does not exist");
}
public DbSet<Table1> Table1 { get; set; }
}
然后以这种方式调用您的连接上下文:
using (var conn = new ConnectionContext())
{
}