Я пытаюсь найти хороший способ получить все мои поиски, которые заполняют раскрывающиеся списки в одной поездке по БД, и используя дженерики, чтобы мне не пришлось создавать кучу пользовательских классов.Я хотел бы избежать создания нескольких пользовательских классов, таких как Class IntStringPair
, Class StringStringPair
, Class StringIntPair
и т. Д.
Я знаю, что в C # есть KeyValuePair, поэтому я попытался использовать его, но он выдает исключение: 'System.Collections.Generic.KeyValuePair[System.Int32,System.String]' must declare a default (parameterless) constructor in order to be constructed during mapping.'
Я видел этот пост: KeyValuePair - нет конструктора без параметров?
но что странного в том, что он работает, если я нажимаю только на одну таблицу, но не работает, если яиспользуйте IMultipleResults
из хранимой процедуры.
Так что это работает:
using (MyDataContext db = new MyDataContext(Config.CoreDBConnectionString))
{
return db.MyTable.Select(p => new KeyValuePair<string, string>(p.Field1, p.Field2)).ToList();
}
Но это не получается:
using (MyDataContext db = new MyDataContext(Config.CoreDBConnectionString))
{
System.Data.Linq.IMultipleResults r = db.GetLookups();
return r.GetResult<KeyValuePair<int,string>>().ToList();
}
Если бы я мог заставить работать эту последнюютогда у меня было бы лучшее из обоих миров, одиночное отключение БД и обобщенное решение.
Я также пробовал Dictionary
, но всегда сталкиваюсь с проблемами сериализации.Приложение, над которым я работаю, старое, поэтому вместо Entity Framework оно использует Linq to SQL.
Так что есть способ сделать это без создания группы классов, желательно чего-то встроенного в C # / .NET, которыйиспользует дженерики и позволяет мне получать несколько наборов результатов за одну поездку?