Я пытаюсь вставить данные с хранимой процедурой в базу данных SQL Server из программы на C # с помощью Dapper.Когда я пытаюсь это сделать, я не получаю никакой ошибки, но, к сожалению, некоторые данные вставляются в неправильный столбец.
База данных состоит из множества таблиц и столбцов, поэтому используется хранимая процедура длявставьте данные правильно.Я тщательно протестировал хранимую процедуру в самом SQL Server и точно знаю, что данные размещаются правильно при непосредственном выполнении кода SQL на сервере.
Вот код, вызывающий хранимую процедуру, и небольшая частьскрипт хранимой процедуры.
public void AddIndividual(string genus, string species, string collection)
{
using (IDbConnection connection = new SqlConnection(connectionString: Helper.CnnVal("Rapento.Properties.Settings.Database1ConnectionString")))
{
List<Individual> individual = new List<Individual>();
individual.Add(new Individual { GivenGenusName = genus, GivenSpeciesName = species, GivenCollectionName = collection });
connection.Execute("dbo.AddIndividual @GivenGenusName, @GivenSpeciesName, @GivenCollectionName", individual);
}
}
CREATE PROCEDURE AddIndividual
@GivenGenusName varchar(255) = null,
@GivenSpeciesName varchar(255) = null,
@GivenDeterminedBy varchar(255) = null,
@GivenDeterminationDate varchar(255) = null,
....
@GivenCollectionName varchar(255) = null,
В базе данных видно, что GenusName
и SpeciesName
вставлены правильно, но CollectionName
вставлено в столбец DeterminedBy
.Это не так, как написано в сценарии SQL.Обращает на себя внимание, что DeterminedBy
является третьим параметром в скрипте, что заставляет меня думать, что параметры передаются не на основе имен, которые я им даю, а на основе их положения (порядок, в котором я их передаю).
Итак, мой вопрос: как я могу вставить этот параметр в правильный столбец, не пропуская каждый необязательный параметр в процедуре?
Я надеюсь, что дал вам всю необходимую информацию,Спасибо!