C# “首先从我的代码中访问数据库连接”;表「;班

C# “首先从我的代码中访问数据库连接”;表「;班,c#,asp.net-mvc,entity-framework-5,C#,Asp.net Mvc,Entity Framework 5,是否可以从代码第一个“表”类内部访问当前连接 我正在尝试编写一个MVC多租户应用程序(1个应用程序,多个db),我能想到的最简单的方法是在创建dbcontext时传递连接字符串(或租户名称)(我已经研究了其他方法,但并不真正理解它们)。但是,一旦进入table类,我就无法访问当前的db连接来执行我需要的其他操作 示例代码 public class ConnectionContext : DbContext { public ConnectionContext(String connect

是否可以从代码第一个“表”类内部访问当前连接

我正在尝试编写一个MVC多租户应用程序(1个应用程序,多个db),我能想到的最简单的方法是在创建dbcontext时传递连接字符串(或租户名称)(我已经研究了其他方法,但并不真正理解它们)。但是,一旦进入table类,我就无法访问当前的db连接来执行我需要的其他操作

示例代码

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();
        }
    }
}
公共类ConnectionContext:DbContext
{
公共连接上下文(字符串连接字符串)
:基本(连接字符串)
{
如果(!this.Database.Exists())
抛出新异常(“数据库不存在”);
}
公共数据库集表1{get;set;}
}
[表(“表1”)]
公共课表1
{
[关键]
公共字符串Column1{get;set;}
公共字符串Column2{get;set;}
公共Int32 GetNoOfColumns()
{

使用(var conn=new ConnectionContext(“???”)/您不必使用连接字符串参数创建构造函数,您可以像这样创建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; }
}

您不必使用连接字符串参数创建构造函数,您可以按如下方式创建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; }
}

不确定以我所看到的方式是否可能。

不确定以我所看到的方式是否可能。

这在这个例子中不起作用,因为这应该是多租户的,它只会从web.config读取相同的连接字符串,不是吗?啊,我明白了,你看过这篇文章了吗?是的,那篇似乎是更多适用于使用一个数据库和多个模式的用户。我想知道我是否可以使用Ninject或类似的工具将context属性添加到所有数据库集。这在本例中不起作用,因为这应该是多租户,并且只需从web.config读取相同的连接字符串,不是吗?啊,我知道了,你看过了吗在这篇文章中?是的,这篇文章似乎更适合使用一个数据库和多个模式的人。我想知道我是否可以使用Ninject或类似的东西将上下文属性添加到所有数据库集。