我正在尝试找到一种好方法来获取我在一次数据库旅行中填充下拉列表的所有查找并使用泛型,这样我就不必创建一堆自定义类。我想避免创建一堆自定义类,例如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 - no parameterless constructor?
但奇怪的是,如果我只打一张表,它就可以工作,但如果我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,但我总是遇到序列化问题。我正在处理的应用程序很旧,所以它使用 Linq to SQL 而不是 Entity Framework。
那么有没有一种方法可以在不创建一堆类的情况下做到这一点,最好是 C#/.NET 中内置的使用泛型并允许我在一次旅行中获得多个结果集的东西?
倚天杖
相关分类