首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用Pomelo.EntityFramework.MySql将连接字符串存储为命名秘密

用Pomelo.EntityFramework.MySql将连接字符串存储为命名秘密
EN

Stack Overflow用户
提问于 2022-07-21 12:12:14
回答 2查看 93关注 0票数 0

我正在尝试用实体框架核心()建立一个ASP .NET核心项目,其中有一个已经包含了一些表的MySQL数据库。我正在使用Pomelo.EntityFramework.MySql包连接到数据库。将连接字符串作为用户秘密传递不起作用。

我已经将用户秘密中的连接字符串设置为ConnectionStrings:Smokey = server=localhost;user=asp;password=password;database=data,然后运行dotnet ef dbcontext scaffold Name=ConnectionStrings:Smokey "Pomelo.EntityFrameworkCore.MySql"

代码语言:javascript
运行
复制
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        if (!optionsBuilder.IsConfigured)
        {
            optionsBuilder.UseMySql("name=ConnectionStrings:Smokey", Microsoft.EntityFrameworkCore.ServerVersion.Parse("8.0.29-mysql"));
        }
    }

运行此操作将生成System.ArgumentException: Option 'name' not supported. at MySqlConnector.MySqlConnectionStringOption.GetOptionForKey(String key) in /_/src/MySqlConnector/MySqlConnectionStringBuilder.cs:line 940

如果我直接在源代码中使用连接字符串运行它,它就能工作。

如何将连接字符串/凭据与EF的代码库分开存储?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-07-25 07:26:07

我修正了它,你甚至根本不需要覆盖OnConfiguring --这只是脚手架生成的东西。

您可以在配置期间传入连接字符串,如下所示

代码语言:javascript
运行
复制
services.AddDbContext<DataContext>(
        dbContextOptions => dbContextOptions
            .UseMySql(connectionString, serverVersion)

您可以在这里使用IConfiguration对象访问用户机密。

代码语言:javascript
运行
复制
var connectionString = new MySqlConnector.MySqlConnectionStringBuilder()
    {
        Server = "localhost",
        UserID = configuration["MySQLUser"],
        Password = configuration["MySQLPass"],
        Database = "data"
    }.ToString();
票数 0
EN

Stack Overflow用户

发布于 2022-07-23 12:24:16

这是一个Pomelo.EntityFrameworkCore.MySql中的bug,是固定在6.0.2

(在撰写本文时,我还没有看到6.0.2是一个可用的NuGet上的版本,但我预计它很快就会上传。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73065951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档