Я занимался поиском довольно сложного набора кода Dapper, который позволил бы мне вызывать хранимую процедуру и читать 3 курсора.Но есть изюминка ... первый курсор возвращает один объект, который содержит 7 сопоставленных объектов (семь отношений один-к-одному внутри класса).Два других курсора возвращают несколько объектов (один ко многим), которые класс содержит и хранит в коллекции объектов.
Итак, я могу заставить работать несколько курсоров, используя QueryMultipe, а затем вызывать Read & ReadSingle.Это заполняет базовый класс без заполнения каких-либо сложных типов, но заполняет два списка в классе.
Отдельно я могу вызывать Query с 8 типами в параметре «types» (поскольку существует ограничение на количество типов, которые вы можете сопоставить, которое превышает 7, предоставляемое Func <>, который выполняет конструкцию),
Но ... кажется, что нет метода ReadSingle, который принимает более 7 типов для сопоставления, и такое же изменение, которое они внесли в Query (чтобы разрешить отправку неограниченного количества типов), не было добавлено вметод ReadSingle через это изменение в их хранилище ... или, по крайней мере, я не могу его найти или выяснить.
Кто-нибудь сталкивался с этим ограничением и смог его обойти, не переписывая хранимую процедуру?(Перезапись хранимого процесса проблематична для этого проекта - длинный рассказ о том, почему.)
Чтобы уточнить, у меня есть класс, подобный приведенному ниже, который заполняется одним вызовом хранимой процедуры - я ищуСильный вызов этой хранимой процедуры для одновременного заполнения этого объекта:
public class Foo
{
private long simpleTypeA;
private string simpleTypeB;
private Complex1 complexType1; // complexType1 thru 7 get sent in with the 1st cursor as part of joins on tables in the SQL
private Complex2 complexType2;
private Complex3 complexType3;
private Complex4 complexType4;
private Complex5 complexType5;
private Complex6 complexType6;
private Complex7 complexType7;
private List<Complex8> complexType8; // Gets sent in with 2nd cursor
private List<Complex9> complexType9; // Gets sent in with 3rd cursor
// ... property implementation & constructor here
}