c# - 如何为 DbPropertyEntry 传递值?

标签 c# asp.net-mvc entity-framework linq ef-code-first

我在我的通用存储库中创建了一个通用方法 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/

相关文章:

c# - 如何在给定数字的左侧放置零,最多 6 位数字,包括给定数字

c# - 我如何获得 protobuf-net 序列化内容的明文表示?

c# - 您如何正确检查 SQLiteDataReader 的空值?

javascript - 如何在我的 Web 应用程序中使用单一模式并避免在每个页面上重复 html?

c# - 使用与表相同类型的 View

c# - Entity Framework - 在运行时更改连接字符串(需要解释)

c# - 如何使表达式将值类型视为引用类型?

c# - SaveChanges() 的验证错误

asp.net-mvc - 使用SQL Server数据库而不是本地数据库asp.net mvc 5数据库优先的asp.net标识表

c# - 在 ASP.NET MVC 中按发布的内容类型进行路由