【发布时间】:2015-12-03 14:35:29
【问题描述】:
我有一个通过实体框架与数据库对话的 DbContext 子类。我正在使用 MVC C#。
我有 n 个与我的表相关的 DbSet。我想为任何 DbSet.Add(entityObject) 调用 Add 方法,在这种情况下 UserAccounts.Add(entityUserAccount) 使用反射或动态变量。
我这样做是因为我需要在我的控制器中通过依赖注入来注入 DbContect。
public class DataContext: DbContext
{
public DbSet<UserAccount> UserAccounts { get; set; }
public void Insert<TypeEntity>(TypeEntity entity) where TypeEntity : BaseEntity
{
var typesToRegister = typeof(DataContext).GetProperties().
Where(p => p.PropertyType == typeof(DbSet<TypeEntity>));
//This is where the code explodes in face:-)
//Please let me know how to fix it
var dbSetItem = typesToRegister.First();
var methodAdd = dbSetItem.GetType().GetMethod("Add");
methodAdd.Invoke(this, new TypeEntity[] { entity });
}
}
//Insert<TypeEntity>(TypeEntity entity) is my service
//method to invoke the DbSet<T>.Add() method.
这是我得到的错误:对象引用未设置为对象的实例。
【问题讨论】:
-
那么,代码有什么问题?
标签: c# entity-framework dynamic reflection dbcontext