connectionString Не может быть нулевым значением - PullRequest
0 голосов
/ 06 октября 2018

У меня проблема со строкой подключения, которая находится внутри файла конфигурации json, как обычно:

  1. Я создал класс: applicationDbcontext
  2. Я сделал DbSet {get; set;}
  3. интегрировать его в контроллер
  4. добавить его в службы

Я прочитал и попробую все советы, вставленные в соответствующий вопрос: asp.net core 2.0 - значение не может быть нулевым.Имя параметра: connectionString Но ни один из них не работает со мной. Вот моя реализация, я надеюсь, что кто-то может мне помочь, спасибо

A_ DB Context:

   public class ApplicationDbContext:DbContext
    {
        public ApplicationDbContext(DbContextOptions options) : base(options)
        {
            Database.EnsureCreated();
        }
        public DbSet<Person> Persons { get; set; }
    }
}

B_ Настройки приложения: config.json и config.development.json

{
    "ConnectionString": {
        "testConnection": "Server=(localdb)\\mssqllocaldb;Database=mvc_db;Trusted_Connection=True;MultipleActiveResultSets=true"
    },
    "Logging": {
        "LogLevel": {
            "Default": "Warning"
        }
    },
    "AllowedHosts": "*"

}

C_ Инъекция служб

Запуск:

  public Startup(IHostingEnvironment env)
        {
            var builder = new ConfigurationBuilder()
                .SetBasePath(env.ContentRootPath)
                .AddJsonFile("appsettings.Json")
                .AddJsonFile("appsettings.Development.Json", true)
                .AddEnvironmentVariables();

            Configuration = builder.Build();
        }

Службы конфигурации:

public void ConfigureServices(IServiceCollection services)
        {

            services.AddDbContext<ApplicationDbContext>(options => {
                options.UseSqlServer(Configuration.GetConnectionString("testConnection"));
            });
            services.Configure<CookiePolicyOptions>(options =>
            {
                // This lambda determines whether user consent for non-essential cookies is needed for a given request.
                options.CheckConsentNeeded = context => true;
                options.MinimumSameSitePolicy = SameSiteMode.None;
            });


            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
        }

D_ Injection Into Controllers:

 private readonly ApplicationDbContext _db;
        public PersonController(ApplicationDbContext db)
        {
            _db = db;
        }

        IEnumerable<Person> People { get; set; }
        public IActionResult Index()
        {
            People = _db.Persons.ToList();
            return View(People);
        }

Я попытался вставить всю строку подключения в конфигурацию. GetConnectionString ("Здесь");И изменить расположение строки подключения сверху вниз и наоборот.Но ничто не решает проблему возврата нулевого значения в ConnectionString.Любая помощь, пожалуйста Спасибо enter image description here

Ответы [ 2 ]

0 голосов
/ 06 октября 2018

Используйте эту структуру для строки соединения

 {

 "ConnectionStrings": {
  "DefaultConnection": "xxx"
   }
}

Проверьте файл json, который вы пропустили s, должно быть ConnectionStrings

И получите простой доступ к вашей строке подключения

   services.AddDbContext<ApplicationDbContext>(options =>
         options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

В вашем случае DefaultConnection должно быть testConnection

0 голосов
/ 06 октября 2018

Я попытался вставить всю строку подключения в конфигурацию. GetConnectionString ("Здесь");

Но вы пытались изменить:

options.UseSqlServer(Configuration.GetConnectionString("testConnection"));

на

options.UseSqlServer("your connection string");

Кроме того, вы упомянули, что у вас есть config.json и config.development.json, но они должны быть appsettings.json и appsettings.development.json

...