在主方法

时间:2016-12-13 14:31:19

标签: c# .net entity-framework .net-core

我试图在控制台应用程序中使用user secrets来存储我的数据库的连接字符串。当我在Program.Main方法中设置所有内容时,它工作正常。

public static void Main(string[] args) {
    var builder = new ConfigurationBuilder()
        .SetBasePath(Directory.GetCurrentDirectory())
        .AddJsonFile("appsettings.json", optional: true)
        .AddUserSecrets();


    var configuration = builder.Build();

    using (var db = new ApplicationDbContext(configuration.GetConnectionString("DefaultConnection"))) {
        foreach (var person in db.People) {
            Console.WriteLine($"Person: {person.FirstName}");
        }
    }
}

但是这需要ApplicationDbContext在构造函数中获取参数,从而阻止dotnet ef工具工作。如果我尝试在ApplicationDbContext类中构建配置,我会收到此错误:

Could not find 'UserSecretsIdAttribute' on assembly 'ef, Version=1.1.0.0,
Culture=neutral, PublicKeyToken=...'

我认为它可能与this issue有关,但添加Assembly参数无效。

.AddUserSecrets(typeof(Program).GetTypeInfo().Assembly);

我还尝试在UserSecretsId中添加xproj属性,recommended by this answer,但仍无法找到。它已经在我的project.json文件中:

{
  "userSecretsId": "Project-45654..."
}

如何使用用户机密在我的控制台应用中存储数据库连接字符串,并且仍能使用dotnet ef命令行工具?

0 个答案:

没有答案