在运行时创建一个实体框架实体的字符串

问题描述:

我不知道是否有办法做到这一点,或者如果我甚至应该这样做。但是我有一个可以在某些实体上调用的方法。但是我想写这个方法一次适用于所有的实体,因为我知道它们以某种方式相似。 有没有办法在运行时通过引用该实体类型的字符串值来创建实体的实例? 所以我的方法是GetSomething(Entity e) 并且可以在10个不同的实体上调用。 在运行时我有一个字符串“Entity4”。 我想创建该实体的一个实例,并调用其上的GetSomething()方法。的GetSomething() 里面我想做的事:在运行时创建一个实体框架实体的字符串

using (var db = new TalonEF_test.GISTestProductionEntities()) 
{ 
    List<runtimeEntity> es = db.runtimeEntity.Where(o => o.OB == oid).ToList(); 
} 
+0

你在寻找Activator.CreateInstance吗?我不确定我是否理解这个问题。 – Casey 2015-02-23 18:16:51

“但我想一次写这种方法适用于所有实体,因为我知道他们是在以某种方式相似。”

编写一个定义这种相似性的接口,然后让你的实体实现它。当您需要引用可能是任何实体的对象时,请使用该接口。如果您需要针对EF运行具体查询,则可以在实体上调用GetType,并使用DbContext.Set<T>中的那个来获取DbSet引用以运行查询。