坚持错误:
Cannot use a lambda expression as an argument to a dynamically dispatched operation without first casting it to a delegate or expression tree type
举一个简单的例子,让我们尝试使用实体框架从数据库中获取一个对象而不实际知道它的类型:
private DbContext db;
private dynamic test(dynamic entity)
{
return db.Set(entity.GetType()).First(x => x.Id == entity.Id);
}
我该如何做到这一点?
答案 0 :(得分:5)
使用泛型执行此操作,而不是dynamic
:
private DbContext db;
private T test<T>(T entity)
where T : BaseEntity
{
return db.Set<T>().First(x => x.Id == entity.Id);
}
拥有BaseEntity
属性Id
,以确保给定实体具有Id。