Я пытаюсь получить доступ к списку через Entity Framework, выкиньте мне ошибку встроенной безопасности - PullRequest
0 голосов
/ 19 февраля 2019

Я настроил тестовый веб-сайт, через который я буду получать доступ к базе данных и просматривать содержимое в базе данных, на веб-сайте я буду видеть таблицу из базы данных.

Я работаю в Visual Studio 2017,.NET Core Framework 2.0, написание кода на C # 7.1.Я обновлял пакет nuget Microsoft.EntityFrameworkCore.SqlServer (2.2.2).

Приложение использует ASP.NET Core, база данных - Northwind Microsoft в SQL Server.

Примечание: я учусь программировать из книги: C # 7.1 и .NET Core 2.0 Packt

Когда я пытаюсь получить доступ к списку с указанным кодом

public class SuppliersModel : PageModel
{
    private Northwind db;

    public SuppliersModel(Northwind injectedContext)
    {
        db = injectedContext;
    }

    public IEnumerable<string> Suppliers { get; set; }

    public void OnGet()
    {
         ViewData["Title"] = "Northwind Web Site - Suppliers";
         Suppliers = db.Suppliers.Select(s => s.CompanyName).ToArray();
    }
}

Я получаю ошибку:

System.Data.Common.DbConnectionOptions.ParseInternal (разбираемый словарь, строка connectionString, bool buildChain, синонимы словаря, bool firstKey)
...
NorthwindWeb.Pages.SuppliersModel.OnGet () в Suppliers.cshtml.cs
+ Suppliers = db.Suppliers.Select (s => s.CompanyName) .ToArray ();

Ответы [ 4 ]

0 голосов
/ 20 февраля 2019

Ребята, спасибо за вашу помощь, после перезапуска Visual Studio проблема решена.

Могу ли я проверить в Visual Studio, какие изменения я внес в код?

Что-то вроде последних правок?

Хуже всего то, что я не знаю, что я сделал, что код работал.

Большую помощь получили ваши комментарии.

0 голосов
/ 19 февраля 2019

Я добавил публичный класс:

public class Supplier
{   
    public int SupplierID { get; set; }
    public string CompanyName { get; set; }
    public string ContactName { get; set; }
    public string ContactTitle { get; set; }
    public string Address { get; set; }
    public string City { get; set; }
    public string Region { get; set; }
    public string PostalCode { get; set; }
    public string Country { get; set; }
    public string Phone { get; set; }
    public string Fax { get; set; }
    public string HomePage { get; set; }
    public ICollection<Product> Products { get; set; }

}

и для доступа к серверу

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();
        services.AddDbContext<Northwind>(options => options.UseSqlServer("Server=(localdb)\\mssqllocaldb;Database=Northwind;Trusted_Connection=True;MultipleActiveResultSets=true"));
    }

Спасибо за помощь

0 голосов
/ 19 февраля 2019

Трудно сказать, какая ошибка основана на том, что вы опубликовали.Можете ли вы обновить и опубликовать полученное вами исключение?Убедитесь, что строка подключения, использованная в переданном в injectionContext, верна, и файл .cshtml также правильно обрабатывает массив.Код, который вы разместили здесь, в порядке, поэтому я подозреваю, что существует ошибка конфигурации вне этого класса Model.

0 голосов
/ 19 февраля 2019

Вы устанавливаете ienumerable в виде строки, когда я думаю, что вы хотите использовать класс.В настоящее время вы просто объявляете список строк, в которых не будет названия компании свойства.

Я думаю, это должно быть

    IEnumerable<Supplier> 

Если класс был

   public class Supplier
    {
        public string ComapnyName
    }

Чтобы уточнить далее, когда объявление iEnumerable или List того, что вы помещаете в <>, является типом объекта в коллекции, поэтому, объявив iEnumberable из строки, вы можете иметь только список строк, и они не будут иметьимя свойства, точно так же как "test" "test2" "etc"

, объявив iEnumerable класса поставщика, это будет список этого класса, например, так [0] Supplier.CompanyName = "ltd" [1]Supplier.CompanyName = "PLC"

, и вы можете ссылаться в своем коде, используя

Suppliers [0] .CompanyName

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...