【发布时间】:2015-09-03 11:04:55
【问题描述】:
我有一个
object elementToUpdate;
我想在我的 DbContext 中更新它。
这似乎是一个很好的起点
public void Update<TEntity>(TEntity entity)
{
DbContext.Set<TEntity>().Attach(entity);
DbContext.Entry(entity).State = EntityState.Modified;
DbContext.SaveChanges();
}
解释here
我的问题是,我无法正确投射我的elementToUpdate。我知道它的精确类型的名称为字符串(例如"MyEntityType"),但我不知道如何使用反射来投射它 - 或者换句话说,如何插入类型参数
DbContext.Set<MyEntityType>()
从字符串
"MyEntityType"
感谢您的帮助。
【问题讨论】:
-
您的代码中是否有 MyEntityType。如果有,您可以使用工厂模式。
-
你真的需要强制转换它,还是你只是在编译时不知道类型?如果您只是调用
Update(elementToUpdate)(没有指定<TEntity>,它应该会根据参数自动为您的模板选择正确的泛型类型。 -
@LInsoDeTeh,如果实体用
object装箱,则TEntity调用的方法等于object,而不是所需的类型。
标签: c# .net entity-framework reflection dbcontext