簡體   English   中英

連接到 .NET 3.1 中的 Entity Framework Core

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM