我试图通过使用EF类的名称动态获取表的条目。
例如,我有一个名为Tents的表,我想访问此对象中的记录。下面是我正在使用的代码,但是factory.DB.CreateObjectSet()不允许您使用System.Type但需要EntityType。
我尝试过将System.Type类型转换为EntityType,但事实并非如此。我也尝试在EntityType中寻找帮助的功能,但似乎没有。如果我用DataAccess.Tent替换dbType,我的代码可以正常工作,因此代码本身没有问题。我只需要弄清楚如何从EF对象的类名中获取EntityType。我可以通过创建一个基于名称返回实体类型的函数(使用开关或if)来实现它,但是每次添加新类时我都需要添加一个新条目。有没有办法用反射做到这一点? (我知道我对GetType的字符串进行了硬编码,但这仅适用于此示例。我通过根据调用的函数微调X或Y来动态获取EF类型的名称。)
public class RecordListHelper<X, Y>
{
public List<X> GetRecord(int recordId)
{
RecordFactory factory = new RecordFactory();
List<X> list = new List<X>();
Type dbType = Type.GetType("DataAccess.Tent");
using (factory.DB)
{
var dbItems = (
from tent in factory.DB.CreateObjectSet<dbType>()
let seedlotid = (from r in factory.DB.Reports
where r.Id == recordId
select r.seedLotId).FirstOrDefault()
where tent.SeedLotId == seedlotid
select tent).ToList();
foreach (var dbItem in dbItems)
{
X listItem = (X)Activator.CreateInstance(typeof(X), new object[] {
dbItem,
recordId
});
list.Add(listItem);
}
}
return list;
}
}
谢谢, DMAN