gpt4 book ai didi

c# - 如何为 DbPropertyEntry 传递值?

转载 作者:太空宇宙 更新时间:2023-11-03 12:29:18 24 4
gpt4 key购买 nike

我在我的通用存储库中创建了一个通用方法 AvoidPropertyModify(T entity, Expression< Func< T, DbPropertyEntry>> properties) 来限制实体特定属性的更新。现在,我如何通过给定的确切参数调用我的方法。

public virtual void AvoidPropertyModify(T entity, Expression<Func<T,DbPropertyEntry>> properties)
{
Entities.Entry(entity).Property(properties).IsModified =false;
}

//Calling

public JsonResult Update(ChartOfAccounts coa)
{
AvoidPropertyModify(coa, x => new {x.Code,x.Name }); // Giving syntax Error
}

最佳答案

使用 Expression<Func<TEntity, TProperty>>表达式:

public virtual void AvoidPropertyModify<TEntity, TProperty>(
TEntity entity,
Expression<Func<TEntity, TProperty>> getProperty)
where TEntity : class
{
var entityEntry = Context.Entry(entity);
var propertyEntry = entityEntry.Property(getProperty);
propertyEntry.IsModified = false;
}

public void Update(Customer customer)
{
AvoidPropertyModify(customer, x => x.Number);
}

获取propertyEntry的另一种选择就是传递属性名:

var propertyEntry = entityEntry.Property("Number");

关于c# - 如何为 DbPropertyEntry 传递值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43417093/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com