【发布时间】:2021-12-17 13:31:37
【问题描述】:
使用 EntityFrameworkCore 连接到数据库,在创建所有表和 DbContext 的模型后,我创建了一个名为 myContext 的新对象,该对象具有 List 类型的属性(名称为 listName)。 我想创建一个新对象并将其添加到列表中。 一切正常,但最后一行代码:
myList.GetType().GetMethod("Add").Invoke(myList, new[] {myObj});
抛出 System.Reflection.TargetInvocationException
类型的异常这是完整的代码:
private void AddNewObjectToThisList(string listName) {
var myList = myContext.GetType().GetProperty(listName).GetValue(myContext);
var objType = myList.GetType().GetGeneric Arguments().Single();
var myObj = Activator.CreateInstance(objType);
myList.GetType().GetMethod("Add").Invoke(myList, new[] {myObj});
}
【问题讨论】:
-
异常来自哪一行? myList 为空?
-
可以分享一下异常信息吗?
-
异常是:内部异常,InvalidOperationException:无法跟踪“列表类型”类型的实例,因为它没有主键
-
这与实体框架有关吗?
-
实际上 myList 是 DbSet 类型的(使用实体框架核心与数据库通信)
标签: c# .net list reflection