App.Config в библиотеке классов для доступа к данным из WPF и ASP. NET? - PullRequest
0 голосов
/ 04 августа 2020

Я впервые пытаюсь использовать SQL для хранения данных в одном из моих проектов, я использую этот учебник, поскольку он имеет для меня наибольший смысл, и, честно говоря Мне нравятся видео парней, и я ненавижу щелкать по сотням плохих видео, прежде чем найду одно, из которого я могу чему-то научиться. сделанный в MSSMS, у меня есть библиотека классов для logi c, библиотека классов данных для доступа к данным и интерфейс WPF (я также планирую добавить интерфейс ASP с меньшими функциями редактирования, но добавив веб-API, все это для обучения)

В видео для подключения dapper парень настраивает помощника для получения строки подключения, но он ищет App.Config через диспетчер конфигурации (который, по его словам, встроен, и вам просто нужно чтобы добавить ссылку, но теперь похоже, что это пакет NuGet).

Но у меня нигде нет App.config, и я никогда не использовал его, поэтому я не знаю, должен ли я добавлять это сделает что-нибудь, где я бы добавил это? Или я сейчас делаю что-то совершенно другое, используя. NET Core not. NET Framework.

Извините, длинный пост и, возможно, не такой ясный, как должен быть, но я борюсь здесь с первым препятствием и Google, кажется, бесполезен в этом.

В качестве примечания я также планирую сохранить пары ключ-значение из моих объектов (как Dictionary<string, string>), мне лучше просто создать новую таблицу только для них и сохранить я объекта, с которым он был связан, ключ и значение в их собственных столбцах?

Ответы [ 2 ]

0 голосов
/ 26 августа 2020

Я просто зашел в свой UI Add> New Item> Application Configuration File, названный App.config, и использовал этот код

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <connectionStrings>
        <clear/>
        <add name="Thenameasusedinmyapp" connectionString="Server =.; Database = NameofDatabase; Trusted_Connection = True;" providerName="System.Data.SqlClient"/>
    </connectionStrings>
</configuration>
0 голосов
/ 04 августа 2020

Вот базовая c do tnet основная командная строка exe

Обратите внимание, это небольшая реализация того, что описано в этой статье: https://docs.microsoft.com/en-us/dotnet/architecture/modern-web-apps-azure/common-web-application-architectures

https://github.com/granadacoder/dotnet-core-on-linux-one/tree/master/src/ConsoleOne

типичные настройки приложения. json содержимое

https://github.com/granadacoder/dotnet-core-on-linux-one/blob/master/src/ConsoleOne/appsettings.json

{
  "ConnectionStrings": {
    "MyConnectionString": "Data Source=someServer\someInstance,1433;Database=master;User Id=sa;Password=Password1#;"
  },
  "Logging": {
    "LogLevel": {
      "Default": "Information"
    }
  },
  "AllowedHosts": "*"
}

этот верхний уровень имеет и определяет эти значения. в моем примере «ConsoleOne» - это верхний уровень.

У меня также есть уровни BAL и DAL.

https://github.com/granadacoder/dotnet-core-on-linux-one/tree/master/src/Bal

https://github.com/granadacoder/dotnet-core-on-linux-one/tree/master/src/Dal

в моем примере используется Dapper, и он вылавливает строку подключения

https://github.com/granadacoder/dotnet-core-on-linux-one/blob/master/src/Dal/EmployeeDataLayer.cs

public class EmployeeDataLayer : IEmployeeDataLayer
{
    private readonly Microsoft.Extensions.Configuration.IConfiguration config;

    public EmployeeDataLayer(Microsoft.Extensions.Configuration.IConfiguration config)
    {
        this.config = config;
    }

    public IDbConnection Connection
    {
        get
        {
            string connectionString = this.config.GetConnectionString("MyConnectionString");
            return new SqlConnection(connectionString);
        }
    }

    public async Task<Employee> GetByID(int id)
    {
        using (IDbConnection conn = this.Connection)
        {
            string sql = "SELECT ID, FirstName, LastName, DateOfBirth FROM Employee WHERE ID = @ID";
            sql = "SELECT TOP 1 id as ID, 'FName' + name as FirstName, 'LName' + name as LastName, crdate as DateOfBirth FROM sysobjects order by id";
            conn.Open();
            var result = await conn.QueryAsync<Employee>(sql, new { ID = id });
            return result.FirstOrDefault();
        }
    }

    public async Task<ICollection<Employee>> GetByDateOfBirth(DateTime dateOfBirth)
    {
        using (IDbConnection conn = this.Connection)
        {
            string sql = "SELECT ID, FirstName, LastName, DateOfBirth FROM Employee WHERE DateOfBirth = @DateOfBirth";
            sql = "SELECT TOP 3 id as ID, 'FName' + name as FirstName, 'LName' + name as LastName, crdate as DateOfBirth FROM sysobjects order by id";

            conn.Open();
            var result = await conn.QueryAsync<Employee>(sql, new { DateOfBirth = dateOfBirth });
            return result.ToList();
        }
    }
}

(Примечание. мой код DAL, приведенный выше, не попадает в реальные серверные таблицы, это простая демонстрация, которую я сделал)

Но вернемся к конфигурации:

Я выполнил sh это, "вставив" объект конфигурации в класс (см. конструктор)

С do tnet -core вы обычно используете встроенный IoC / DI

Вы можете увидеть это здесь:

https://github.com/granadacoder/dotnet-core-on-linux-one/blob/master/src/ConsoleOne/Program.cs

    private static IServiceProvider BuildDi(IConfiguration config)
    {
        string connectionString = config.GetConnectionString("MyConnectionString");


        return new ServiceCollection()
            .AddSingleton<IEmployeeManager, EmployeeManager>()
            .AddTransient<IEmployeeDataLayer, EmployeeDataLayer>()

            .AddLogging(loggingBuilder =>
            {
                // configure Logging with NLog
                loggingBuilder.ClearProviders();
                loggingBuilder.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace);
                loggingBuilder.AddNLog(config);
            })

            .AddSingleton<IConfiguration>(config)
            .BuildServiceProvider();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...