Akl*_*kli 1 c# reflection entity-framework
我的实体框架上下文:
public class MyContext : DbContext
{
public DbSet<Company> Companies { get; set; }
public DbSet<Contact> Contacts { get; set; }
public DbSet<Event> Events { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我添加对象的方法:
public void AddObject(DbContext context, Type t, object object_to_add)
{
PropertyInfo context_property =
context.GetType().GetProperties()
.Where(p => typeof(IEnumerable).IsAssignableFrom(p.PropertyType)
&& p.PropertyType.GenericTypeArguments.Any()
&& p.PropertyType.GenericTypeArguments.First() == t)
.Single();
DbSet db_set = (DbSet)context_property.GetMethod.Invoke(context, null);
db_set.Add(object_to_add);
}
Run Code Online (Sandbox Code Playgroud)
但是,代码崩溃当我尝试投了DbSet<>到DbSet,
我使用反射是因为我收到映射到现有模型的DTO对象(也通过反射),我不想为每个新模型编写add方法(我喜欢40,并且列表呈指数增长)
块引用
有什么办法吗?
我认为如果创建通用方法会更容易:
public void AddObject<T>(DbContext context, T object_to_add)
{
context.Set<T>().Add(object_to_add);
}
Run Code Online (Sandbox Code Playgroud)
可以使用Set<TEntity>上面显示的方法。
| 归档时间: |
|
| 查看次数: |
2698 次 |
| 最近记录: |