Новичок в dapper и с трудом понимает, как выполнить этот запрос. Я посмотрел на другие примеры на их сайте и ТАК, но мне все еще сложно собрать все вместе.
У меня есть следующая хранимая процедура в моем sql дБ.
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
SELECT tests.id AS tests_id, tester.name AS tester_name, product.name AS prod_name, product.version
FROM tests JOIN tester ON tests.tester_id = tester.id
JOIN product ON tests.product_id = product.id;
END
Вот мой класс Test вместе с моими классами Product и Tester. Свойства класса Tester и Product совпадают с именами столбцов в таблицах Tester и Product. Таблица Tests содержит только id, tester_id (fk) и product_id (fk).
public class Test
{
public int Id { get; set; }
public Tester Tester { get; set; }
public Product Product { get; set; }
}
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public string Version { get; set; }
}
public class Tester
{
public int Id { get; set; }
public string Name { get; set; }
}
Я пытаюсь запустить эту хранимую процедуру и заполнить мой объект Test.
public List<Test> GetTests()
{
using (IDbConnection connection = new SqlConnection(Helper.CnnVal("pqual_db")))
{
connection.Open();
var output = connection.Query<Test, Product, Tester, Test>("pqual_db.sptests_GetTests", (tests, products, tester) => { tests.Product = products; tests.Tester = tester; return tests; }).ToList();
return output;
}
}
В настоящее время я получаю ArgumentException: «При использовании API многократного отображения убедитесь, что вы установили параметр splitOn, если у вас есть ключи, отличные от id Имя параметра: splitOn.» Я думаю, что параметр splitOn должен использоваться здесь дважды, один раз для оператора соединения относительно идентификатора тестера и один раз для другого соединения для идентификатора продукта, однако у меня эти столбцы названы по-разному, как вы можете видеть. Разве это не вызвало бы проблемы для брезгливых? Должен ли я go войти в мою базу данных и переименовать мои PK для таблиц, таких как tester.id, в tester.tester_id, чтобы эти запросы работали? Я думаю, мне не нужно так далеко, но я действительно зашла в тупик, как это исправить. Любая помощь будет оценена.