У меня в коде есть следующие модели:
Код: Выделить всё
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;}
}
Код: Выделить всё
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]