实体框架执行“SetProperty”的更新 lambda 参数不代表要设置的有效属性

问题描述 投票:0回答:1
if (typeof(T).GetInterface(nameof(IHasEntityModifierData)) != null)
{
    await _context.Set<T>()
    .Where(predicate)
    .ExecuteUpdateAsync(a=>a.SetProperty(p=>(p as IHasEntityModifierData).LastModifiedDate,DateTime.UtcNow));
}

错误是: 执行更新(a => a.SetProperty( propertyExpression: p => (p as IHasEntityModifierData).LastModifiedDate, valueExpression: (DateTime?)DateTime.UtcNow))' 无法翻译。附加信息:“SetProperty”的以下 lambda 参数不代表要设置的有效属性:“p => (p as IHasEntityModifierData).LastModifiedDate”

假设我有客户和产品实体 客户端实现了 IHasEntityModifierData,而产品则没有。

要通过通用方法生成执行更新,如果实体实现了 IHasEntityModifierData,我也想更新修改日期。但用这种方法铸造是行不通的

c# entity-framework .net-core entity-framework-core
1个回答
0
投票

解决了EF.Property函数的问题; 解决方案是使用:

SetProperty(p => EF.Property<DateTime?>(p, nameof(IHasEntityModifierData.LastModifiedDate)), p=>DateTime.UtcNow)

感谢https://stackoverflow.com/a/75473359/24666121

© www.soinside.com 2019 - 2024. All rights reserved.