我有以下方法:
甚至可以这样做:
我有以下方法:
public void Update<T>(T entity, IEnumerable<Expression<Func<T, Object>>> properties)
where T : class
{
_context.Set<T>().Attach(entity);
foreach (var property in properties)
_context.Entry<T>(entity)
.Property(((MemberExpression)property.Body).Member.Name)
.IsModified = true;
} // Update
我正在传递一个Entity Framework实体,将其附加并将每个属性设置为已修改。
我想按以下方式使用它:
_repository.Update<File>(file, new { x => x.Data, x => x.Name });
我正在传递一个文件并且说明数据和名称属性已被修改。
但是我收到了以下错误:
The best overloaded method match for 'Update<File>(File,
IEnumerable<System.Linq.Expressions.Expression<System.Func<File,Object>>>)'
has some invalid arguments
我该如何更改我的方法,以便实现我所提到的用法?
或者:
_repository.Update<File>(file, x => x.Data, x => x.Name);
甚至可以这样做:
_repository.Update<File>(file, x => new { x.Data, x.Name });
properties
,因为它是一个数组... - Jon SkeetExpression<Func<T, Object>>[]
,以便在每个对象中有另一个表达式数组?因为 EF Core 需要使用Include()
和ThenInclude()
从 dbContext 中获取相关数据。所以我们需要传递一个父实体的数组,其中每个父实体可能有多个子实体引用。 - Gopinath