Вставка автоматически сгенерированного идентификатора в столбец ForeignKey с помощью параметризованных запросов

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

Мой вопрос: как мне вставить этот автоматически сгенерированный идентификатор в другую таблицу в соответствующий столбец внешнего ключа с помощью параметризованных запросов? Примером может служить то, что вторая таблица предназначена для бронирования и должна была получить значение идентификатора (таблица клиента) клиента, который совершил бронирование, и вставить его в столбец FK ID в таблице бронирования.

Я посмотрел на код в сети и на переполнение стека, и это не совсем то, что я ищу, поскольку они либо используют процедуры SQL в конструкторе базы данных, либо имеют дело с вставленными вручную идентификаторами.

Пример кода, который я написал:

//Insert CustomerID into TestTable
public void AddCustomerIdToForeignKeyColumnInNewTable()
{
    string connectionString = ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;

    SqlConnection myConnection = new SqlConnection(connectionString);

    String query;

    query = "INSERT INTO TestTable VALUES (@CustomerID)";
    SqlCommand dbCommand = new SqlCommand(query, myConnection);
    dbCommand.Parameters.AddWithValue("@CustomerID", whateverIdValueGoesHere);
    try
    {
        myConnection.Open();
        dbCommand.ExecuteNonQuery();
        myConnection.Close();
    }
    catch (Exception ex)
    {
        Exception e = ex;
        myConnection.Close();
    }

}

1 ответ

Ты можешь использовать:

 Select SCOPE_IDENTITY(); 

Сразу после вставки заявления.

Другими словами:

query = "INSERT INTO TestTable VALUES (@CustomerID); SELECT SCOPE_IDENTITY();";

А потом:

 var cid= dbCommand.ExecuteScalar();

cid будет содержать значение идентификатора клиента, сгенерированного базой данных

Другие вопросы по тегам