System.InvalidOperationException: свойство ConnectionString не было инициализировано - PullRequest
0 голосов
/ 16 октября 2018

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

public partial class DishManager : Window
{
    SqlConnection sqlConnection;

    public DishManager()
    {
        InitializeComponent();
        string connectionString = ConfigurationManager.ConnectionStrings["POS_WPF1.Properties.Settings.POSdbConnectionString"].ConnectionString;
        sqlConnection = new SqlConnection(connectionString);
    }

    private void AddDish_Button(object sender, RoutedEventArgs e)
    {
        try
        {
            string query = "if not exists (select * from Dish where Name = @Name) insert into Dish values (@DishID, @Name, @Price, @CategoryID)";
            SqlCommand sqlCommand = new SqlCommand(query, sqlConnection);

            sqlConnection.Open();
            sqlCommand.Parameters.AddWithValue("@DishID", dishIDBox.Text);
            sqlCommand.Parameters.AddWithValue("@Name", dishNameBox.Text);
            sqlCommand.Parameters.AddWithValue("@CategoryID", categoryComboBox.SelectedIndex);
            sqlCommand.Parameters.AddWithValue("@Price", dishCostBox.Text);

            sqlCommand.ExecuteScalar();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
        finally
        {
            sqlConnection.Close();
        }
    }
}

Сохраненная информация выглядит следующим образом:

CREATE TABLE [dbo].[Dish] (
    [Id]         INT           IDENTITY (1, 1) NOT NULL,
    [DishID]     INT           NOT NULL,
    [Name]       NVARCHAR (50) NOT NULL,
    [Price]      MONEY         NOT NULL,
    [CategoryID] INT           NOT NULL,
    PRIMARY KEY CLUSTERED ([Id] ASC),
    CONSTRAINT [FKCategory] FOREIGN KEY ([CategoryID]) REFERENCES [dbo].[Category] ([Id])
);

Помимо того, что Категория связана с другой таблицей, обстоятельства в значительной степени идентичны.

Вот то, что я получаю при нажатии кнопки.

Любой совет будетоценил, и заранее спасибо.

1 Ответ

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

Мне удалось решить эту проблему, локально инициализируя SqlConnection в каждом члене класса:

SqlConnection sqlConnection1 = new SqlConnection(ConfigurationManager.ConnectionStrings["POSdbConnectionString"].ConnectionString);

Я немного сбит с толку, почему глобально объявленная переменная перестала работать в этом случае.

...