Kul*_*gar 2 c# reflection silverlight entity-framework mvvm
所以我试图动态加载我的域数据服务,其中表名是字符串...这是我到目前为止所得到的:通常我会像这样加载:
theDomainDataService.Load(theDomainDataService.getUsersQuery());
Run Code Online (Sandbox Code Playgroud)
所以我试图自动化字符串名称加载哪个实体.
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
Run Code Online (Sandbox Code Playgroud)
这实际上是正确加载我的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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
请记住,我所需要的只是一个人口密集的实体(当我拥有的是实体的名称)填充客户端...所以我可以说
DomainServiceClass theClass = new DomainServiceClass();
theClass.Load(theClass.GetEntityNameQuery());
Run Code Online (Sandbox Code Playgroud)
所以我可以用... theClass.Entity(用户......问题等)引用适当加载的实体
我仍然不确定我会效仿,但......
我Post
在我的Sandbox
命名空间中有一个实体,我从我的DbContext
实例中使用字符串中的实体类型名称开始...
// Get my entity type (if in same assembly, else you'll have to specify)
Type postType = Type.GetType("Sandbox.Post");
using (var db = new StackOverflowEntities()) {
// not required
db.Configuration.ProxyCreationEnabled = false;
IQueryable query = db.Set(postType);
foreach (var item in query) {
DbEntityEntry entry = db.Entry(item);
}
}
Run Code Online (Sandbox Code Playgroud)
这导致基于实体类型字符串检索任何DbSet.在foreach循环项目的断点下方 - 显示值.
归档时间: |
|
查看次数: |
269 次 |
最近记录: |