gpt4 book ai didi

c# - 无法转换类型为 'System.Data.Entity.DbSet` 的对象 1[ModelName ]' to type ' System.Data.Entity.DbSet'

转载 作者:太空宇宙 更新时间:2023-11-03 18:25:00 24 4
gpt4 key购买 nike

我的 Entity Framework 上下文:

public class MyContext : DbContext
{
public DbSet<Company> Companies { get; set; }
public DbSet<Contact> Contacts { get; set; }
public DbSet<Event> Events { get; set; }
}

我添加对象的方法:

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);
}

但是当我尝试转换 DbSet<> 时代码崩溃了至 DbSet ,

我正在使用反射,因为我接收到映射到现有模型的 DTO 对象(也通过反射),我不想为每个新模型编写一个添加方法(我有 40 个,列表是呈指数增长)

block 引用

有什么解决办法吗?

最佳答案

我认为如果您创建一个泛型方法会更容易:

public void AddObject<T>(DbContext context,  T object_to_add)
{
context.Set<T>().Add(object_to_add);
}

你可以使用 Set<TEntity> 方法如上所示。

关于c# - 无法转换类型为 'System.Data.Entity.DbSet` 的对象 1[ModelName ]' to type ' System.Data.Entity.DbSet',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36583067/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com