【发布时间】:2013-01-03 16:01:02
【问题描述】:
所以我正在尝试动态加载我的域数据服务,其中表名是字符串......这是我到目前为止所得到的:通常我会像这样加载:
theDomainDataService.Load(theDomainDataService.getUsersQuery());
所以我正在尝试通过字符串名称自动加载哪个实体。
String theVariableEntityName = "Users";
Type t = theDomainDataService.GetType();
MethodInfo stuff = t.GetMethod("Get" + theVariableEntityName + "Query");
var theQuery = stuff.Invoke(theDomainDataService, null);
theDomainDataService.Load((EntityQuery<MySite.Web.Models.User>)theQuery);
---------------------------------------------------------^ Problem
这实际上是在正确加载我的 domainDataService,但我需要的是一种动态方式来推断 EntityQuery 的类型(无需明确声明它将成为用户),因为实际上它可以是任何东西。
我在 DomainDataService 类中尝试过这个,但没有成功,它没有找到方法的“Set”或“Entry”。
public List<object> void PopulateEntity(string theEntityName)
{
Type theEntity = Type.GetType("MySiteMaintenance.Web.Models." + theEntityName);
using (var db = new DatingEntities())
{
IQueryable query = db.Set(theEntity);
foreach (var item in query)
{
var entry = db.Entry(item);
}
}
}
记住,我需要的是一个填充的实体(当我只有实体的名称时)填充客户端......所以我可以说
DomainServiceClass theClass = new DomainServiceClass();
theClass.Load(theClass.GetEntityNameQuery());
所以我可以引用适当加载的实体... theClass.Entity(用户...问题等)
【问题讨论】:
-
回想起来,这实际上是正确加载实体。但我需要一种方法来动态指定我的“类型”(MySite.Web.Models.User) 想法? :(
-
可以从
((TabItem)sender).Header推断出类型(例如:MySite.Web.Models.User)吗?还是作为参数传递?
标签: c# silverlight entity-framework reflection mvvm