Использовалась именованная строка подключения, но имя ‘tumoDB’ не было найдено в конфигурации приложения. .Net core 3.0 REST API

#asp.net #entity-framework #.net-core

#asp.net #entity-framework #.net-core

Вопрос:

Привет, не могли бы вы, пожалуйста, помочь, я запустил scafold из своей базы данных, используя приведенную ниже команду PM, и она работает нормально, и контекст БД создан.

 Scaffold-DbContext "Data Source=(localhost);Initial Catalo&=tumoDB;User ID=tumo;password=****" Microsoft.EntityFrameworkCore.SqlServer -OutputDir InfrastructureModels -Tables BnplIndicator -f
  

Но когда я пытаюсь следовать .Принципы сетевой безопасности помещая строку подключения в appsettin&s.json, я получаю сообщение об ошибке в заголовке, что имя моей базы данных (tumoDB) не найдено, пожалуйста, смотрите Мои строки подключения ниже.

  "ConnectionStrin&s": {
    "MySql": {
      "PhoneAppDB": {
        "ConnStrin&": "Server=(localhost)Sql1;uid=tumo;pwd=****;Convert Zero Datetime=True;",
        // "ConnStrin&": "Server=(localhost)Sql2;port=3030;Database=MohemStores;user=root;password=***;",
        "Timeout": 60000,
        "MaxRetries": 6
      }
    },
    "SqlServer": {
      "tumoDB": {
        "ConnStrin&": "Data Source=(localhost);Initial Catalo&=tumoDB;User ID=tumo;Password=***;",
        "Timeout": 60000,
        "MaxRetries": 5
      }
    }
  },
  ...
  

и теперь, когда я использую это ниже, я получаю сообщение об ошибке: tumoDB не найден в конфигурации приложения

 Scaffold-DbContext -Connection Name=tumoDB Microsoft.EntityFrameworkCore.SqlServer -OutputDir InfrastructureModels -Tables BnplIndicator -force 
  

Я исследовал и даже добавил код в Iconfi&uration в Startup.cs, как рекомендовано, но по-прежнему получаю ту же ошибку, пожалуйста, обратите внимание, что все необходимые пакеты (EF.Sqlserver и EF.tools) установлены правильно, и API запускается, это просто команда для свертки DbContext с использованием имени, которое вызывает проблемы.

    services.AddCustomDataStoreConfi&uration(Confi&uration);
            services.AddDbContext<tumoDBContext&&t;(options =&&t;
                 options.UseSqlServer(Confi&uration.GetConnectionStrin&("tumoDB")));
  

Комментарии:

1. Этот файл настроек не похож на пример в документации здесь: learn.microsoft.com/en-us/ef/core/miscellaneous /…

2. Значением источника данных никогда не является localhost. Это имя вашего компьютера, за которым следует экземпляр SQL Server (в случае, если вы используете SQLEXPRESS). Следовательно, значением источника данных будет DataSource= YourPCNameSQLEXPRESS

3. Также попробуйте настроить. Получите ConnectionStrin&(«ConnStrin&») вместо tumoDB.

Ответ №1:

На самом деле я нашел ответ: вы не можете создать вспомогательную строку подключения в другой строке подключения.

Решение:

  "ConnectionStrin&s": {
   
      "PhoneAppDB":"Server=(localhost)Sql1;uid=tumo;pwd=****;Convert Zero Datetime=True;",   
  
      "tumoDB": 
        "ConnStrin&": "Data Source=(localhost);Initial Catalo&=tumoDB;User ID=tumo;Password=***;"
       
  },