[英]Connect to Entity Framework Core in .NET 3.1 Azure Function Project Startup.cs
我正在嘗試對 Azure 中的數據庫使用實體框架。 我在 local.settings.json 中存儲了一個連接字符串,但是我從 Startup.cs 引用它的所有嘗試都失敗了。
我能夠使用 IConfiguration DI 訪問我的連接字符串到 function class 並且我可以使用 SQL 命令成功訪問數據庫,使用如下配置:
string connectionString = _configuration.GetConnectionString("cpni");
所以我知道連接字符串正在工作並且我可以訪問它。
如果我嘗試在Startup class 上將DI 與 IConfiguration 一起使用,編譯器不會給我任何錯誤,但是一旦它在調試中運行,我就會開始收到以下錯誤:
System.Private.CoreLib:沒有為“CPNI_Functions.Startup”類型定義無參數構造函數。
這是我目前成功使用硬編碼connectionString 的內容(因為將 DI 與 IConfiguration 一起使用不起作用):
builder.Services.AddDbContext<CpniContext>(
options => options.UseSqlServer(connectionString));
這使我可以通過 EF 使用數據庫。 我想使用的是它的某種組合和類似的東西:
builder.Services.AddDbContext<CpniContext>(/*options need to go here?*/)
.Configure<IConfiguration>((configuration) =>
{
//Or are options supposed to go here somewhere, or be bound here with some sort of .Bind()?
configuration.GetConnectionString("cpni");
});
如果這沒有意義或不起作用,那么請讓我知道設置此 DI 的推薦方法是什么。 如果可能,我想避免通過 ConfigurationManager 使用配置查找。
作為參考,這里是完整的 Startup.cs,這是有效的:
using CPNI_Functions.Data;
using Microsoft.Azure.Functions.Extensions.DependencyInjection;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
[assembly: FunctionsStartup(typeof(CPNI_Functions.Startup))]
namespace CPNI_Functions
{
class Startup : FunctionsStartup
{
public override void Configure(IFunctionsHostBuilder builder)
{
string connectionString = "myconnectionstringhere";
builder.Services.AddDbContext<CpniContext>(
options => options.UseSqlServer(connectionString));
}
/*
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<CpniContext>(configuration.GetConnectionString("cpni"));
}*/
}
}
我是核心新手,我是 Azure 函數的新手,所以請原諒我對此的無知。 預先感謝您的幫助。
對於 Azure function 應用程序,您可以嘗試添加 NuGet ZEFE90A8E604A7F7640E8Z8D03A
System.Configuration.ConfigurationManager
local.settings.json:
{
"ConnectionStrings": {
"cpni": "[ConnectionStringDetails]"
}
}
然后希望您應該能夠使用 ConfigurationManager 進行訪問。
services.AddDbContext<CpniContext>(
options => options.UseSqlServer(ConfigurationManager.ConnectionStrings["cpni"].ConnectionString));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.