【发布时间】:2020-06-12 07:19:09
【问题描述】:
我将不再对 Azure DB 使用 SQL 身份验证,而是改用 Active Directory 托管身份验证,如 article 中所述。
基本上,我正在做两件主要的事情来让它发挥作用。
1- 在 DBContext 构造函数中注入令牌:
public MyDBContext(DbContextOptions<MyDBContext> options)
: base(options)
{
var conn = (SqlConnection)Database.GetDbConnection();
conn.AccessToken = (new Microsoft.Azure.Services.AppAuthentication.AzureServiceTokenProvider()).GetAccessTokenAsync("https://database.windows.net/").Result;
}
2- 在我的 Web 应用启动文件中,我正在注入 DBContext
string SqlConnection = localConfig["SqlConnectionString"];
services.AddDbContext<MyDBContext>(options => options.UseSqlServer(SqlConnection, sqlServerOptions => { sqlServerOptions.CommandTimeout(1000); }));
我现在的问题是,每次我需要使用Scaffold-DbContext 命令刷新模型时,我的MyDbContext 都会被覆盖,并且我会丢失对构造函数所做的更改。
有哪些解决方案可以避免这个问题?或者,有没有更好的方法将令牌注入其他地方有效?
编辑: 请注意,我使用的是 EF 2.x
【问题讨论】:
标签: c# azure entity-framework entity-framework-core azure-active-directory