如何在运行时在EF7 Core中更改连接字符串?

对于B

我正在建立一个系统,每个客户将拥有自己的数据库。当客户登录时,我将使用用户电子邮件地址的域名来决定应使用的连接字符串。

如今,已在startup.cs文件中设置了连接字符串,但这将无法正常工作。

我的问题是:在EF Core中实现基于规则的连接字符串选择的最佳方法是什么?

用户登录后,该用户应在整个会话期间使用相同的连接字符串。

莫森·埃斯迈普尔(Mohsen Esmailpour)

将您的连接字符串存储在配置文件中,以我为例,我正在使用appsettings.json文件。

var builder = new ConfigurationBuilder().AddJsonFile("appsettings.json").Build();
var connectionString = builder["Data:DefaultConnection:ConnectionString"];

var optionsBuilder = new DbContextOptionsBuilder();
optionsBuilder.UseSqlServer(connectionString);

var context = new DataContext(optionsBuilder.Options);

DataContext班级:

public class DataContext: DbContext
{
    public DataContext(DbContextOptions options) : base(options)
    { 
    }
}

而且您也可以通过依赖注入来做到这一点。对于此示例,我正在使用Autofac

创建ConnectionString类:

public class ConnectionStringDto
{
    public string ConnectionString { get; set; }
}

Autofac 配置:

var configBuilder = new ConfigurationBuilder().AddJsonFile("appsettings.json").Build();
var connectionString = new ConnectionStringDto { ConnectionString = configBuilder ["Data:DefaultConnection:ConnectionString"]; };

var containerBuilder = new ContainerBuilder();
containerBuilder.RegisterInstance(connectionStringDto).AsSelf().SingleInstance();
containerBuilder.RegisterType<DataContext>().AsSelf().InstancePerLifetimeScope();

DataContext班级:

public class DataContext : DbContext
{
    private readonly ConnectionStringDto _connectionString;

    public DataContext(ConnectionStringDto connectionString)
    {
        _connectionString = connectionString;
    }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        base.OnConfiguring(optionsBuilder);
        optionsBuilder.UseSqlServer(_connectionString.ConnectionString);
    }
    .
    .
    .

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在EF 6中在运行时更改连接字符串

来自分类Dev

如何在运行时更改NLog目标的连接字符串?

来自分类Dev

Dapper 在运行时更改连接字符串

来自分类Dev

EF6在运行时更改连接字符串

来自分类Dev

使用连接字符串和精简程序时如何在运行时更改初始目录

来自分类Dev

EF Core和LINQ-如何在运行时使用字符串变量构建动态的Where子句?

来自分类Dev

如何在运行时在Objective-C中查找字符串常量?

来自分类Dev

如何在运行时将java中的字符串参数作为参数传递

来自分类Dev

如何在运行时将java中的字符串参数作为参数传递

来自分类Dev

SQLite EF6在运行时以编程方式设置连接字符串

来自分类Dev

如何在运行时动态连接到DataSources?

来自分类Dev

如何在运行时更改NLog规则目标?

来自分类Dev

如何在运行时更改静态方法的行为?

来自分类Dev

如何在运行时更改标签约束?

来自分类Dev

如何在运行时更改SolidColorBrush资源的颜色?

来自分类Dev

如何在运行时更改Web服务地址?

来自分类Dev

如何在运行时更改RadioGroup的背景颜色?

来自分类Dev

如何在运行时更改按钮标签?

来自分类Dev

TFileOpenDialog FileTypes:如何在运行时更改

来自分类Dev

如何在运行时更改实例类型

来自分类Dev

WPF:如何在运行时更改行为?

来自分类Dev

如何在运行时更改MAIN活动

来自分类Dev

如何在运行时更改FMX ListBoxGroupHeader文本

来自分类Dev

如何在运行时更改.exe的名称

来自分类Dev

如何在运行时更改主机的IP地址?

来自分类Dev

如何在运行时更改ImageView的宽度?

来自分类Dev

如何在运行时更改 styleSheet 属性?

来自分类Dev

如何在运行时更改可绘制资源?

来自分类Dev

如何在运行时更改库声明?

Related 相关文章

  1. 1

    在EF 6中在运行时更改连接字符串

  2. 2

    如何在运行时更改NLog目标的连接字符串?

  3. 3

    Dapper 在运行时更改连接字符串

  4. 4

    EF6在运行时更改连接字符串

  5. 5

    使用连接字符串和精简程序时如何在运行时更改初始目录

  6. 6

    EF Core和LINQ-如何在运行时使用字符串变量构建动态的Where子句?

  7. 7

    如何在运行时在Objective-C中查找字符串常量?

  8. 8

    如何在运行时将java中的字符串参数作为参数传递

  9. 9

    如何在运行时将java中的字符串参数作为参数传递

  10. 10

    SQLite EF6在运行时以编程方式设置连接字符串

  11. 11

    如何在运行时动态连接到DataSources?

  12. 12

    如何在运行时更改NLog规则目标?

  13. 13

    如何在运行时更改静态方法的行为?

  14. 14

    如何在运行时更改标签约束?

  15. 15

    如何在运行时更改SolidColorBrush资源的颜色?

  16. 16

    如何在运行时更改Web服务地址?

  17. 17

    如何在运行时更改RadioGroup的背景颜色?

  18. 18

    如何在运行时更改按钮标签?

  19. 19

    TFileOpenDialog FileTypes:如何在运行时更改

  20. 20

    如何在运行时更改实例类型

  21. 21

    WPF:如何在运行时更改行为?

  22. 22

    如何在运行时更改MAIN活动

  23. 23

    如何在运行时更改FMX ListBoxGroupHeader文本

  24. 24

    如何在运行时更改.exe的名称

  25. 25

    如何在运行时更改主机的IP地址?

  26. 26

    如何在运行时更改ImageView的宽度?

  27. 27

    如何在运行时更改 styleSheet 属性?

  28. 28

    如何在运行时更改可绘制资源?

  29. 29

    如何在运行时更改库声明?

热门标签

归档