【发布时间】:2016-11-15 23:39:32
【问题描述】:
方法从数据库返回记录。
public T Find(params object[] primaryKeys)
{
var dbSet = _sessionContext.Set<T>() as DbSet<T>;
return dbSet != null ? dbSet.Find(primaryKeys) : null;
}
我正在尝试通过反射调用
var methodCreateReadRepositoryEntity =
typeof(IRepositoryFactory)
.GetMethod("CreateReadRepository")
.MakeGenericMethod(entityMetadata.GetEntityType());
var entityReadRepository =
methodCreateReadRepositoryEntity
.Invoke(_repositoryFactory, new object[] { _sessionMarketContext });
List<object> keys = new List<object>();
keys.Add(value);
var methodEntityGet =
entityReadRepository.GetType().GetMethod("Find", new Type[] { typeof(object[])});
var fromRepo =
methodEntityGet.Invoke(entityReadRepository, new object[]{new []{ keys.ToArray()[0]}});
值为 Guid。我有错误
其中一个主键值的类型与实体中定义的类型不匹配。 调用的目标已抛出异常。
【问题讨论】:
-
为什么
[0]上的keys.ToArray()[0]? -
.Find()查找单个实体 -
您可以从说出您想要实现的目标开始。也许知道这会让我们提供帮助,而不是尝试调试甚至可能与您尝试实现的目标不匹配的代码。
-
现有机制,将数据从xls文件导入db。但它只添加新记录,我无法更新 db thorgh 导入中的记录,因为我有例外,该记录存在于表中。我正在尝试实现类似的机制,它将获取现有记录,修改它并保存在数据库中。我希望“var fromRepo”返回我的实体
标签: c# entity-framework reflection