Использование Dapper «один ко многим» (разделение) с дженерикамиC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Использование Dapper «один ко многим» (разделение) с дженериками

Сообщение Anonymous »

Я пытаюсь сопоставить объекты в отношениях один-ко-многим с помощью Dapper. Предположим, есть база данных с таблицами отделов и таблицами людей. В таблице People есть столбец DepartmentId для создания связи между людьми и отделами. Каждый человек может состоять только в одном отделе.
У меня в коде есть следующие модели:

Код: Выделить всё

public class PersonModel
{
public int Id {get; set;}
public string FullName {get; set;}
public DepartmentModel Department {get; set;}
}

Код: Выделить всё

public class DepartmentModel
{
public int Id {get; set;}
public string Name {get; set;}
}
Я хочу использовать Dapper для извлечения людей и сохранения их в объекте, содержащем свойство Departments. Это возможно с помощью SplitOn следующим образом:

Код: Выделить всё

public Task GetPeople(string connectionString)
{
using var connection = new SqlConnection(connectionString);

var query = "Select People.Id, People.FullName, Department.Name FROM People LEFT JOIN Departments ON People.Id = Departments.Id";

return await connection.QueryAsync(query, (person, department) => {
person.Department = department;
return person;
},
splitOn: "Id" );
}
Актуальный вопрос
Пока все хорошо. Сейчас я хочу превратить это в метод многократного использования с использованием дженериков, и я застрял, потому что не могу выполнить задание person.Department = Department с дженериками, поскольку .Department — это свойство, которое я не знаю. А я просто не могу использовать отдел. Я также попробовал model.typeof(TSubModel)(см. ниже). Есть ли способ добиться этого? Код, который не работает:

Код: Выделить всё

public Task GetPeople(string connectionString, string query)
{
using var connection = new SqlConnection(connectionString);

return await connection.QueryAsync(query, (model, subModel) => {
model.subModel= subModel; // 

Подробнее здесь: [url]https://stackoverflow.com/questions/79291663/using-dapper-one-to-many-spliton-with-generics[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»