Entity framework 如何正确排除UpdateModel中的属性?
我使用的是EF,有一个model entity Test.cs,它包含几个属性和计算出的属性偏差。此属性应显示在gridview中,但不应更新此属性。我已将计算列定义如下:Entity framework 如何正确排除UpdateModel中的属性?,entity-framework,updatemodel,Entity Framework,Updatemodel,我使用的是EF,有一个model entity Test.cs,它包含几个属性和计算出的属性偏差。此属性应显示在gridview中,但不应更新此属性。我已将计算列定义如下: [DatabaseGenerated(DatabaseGeneratedOption.Computed)] public decimal? Deviation { get; private set; } 在控制器方法中,我将尝试以下方式保存更改: public virtual ActionResult BatchUpdat
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public decimal? Deviation { get; private set; }
在控制器方法中,我将尝试以下方式保存更改:
public virtual ActionResult BatchUpdate(MVCxGridViewBatchUpdateValues<T, int> updateValues)
{
if (ModelState.IsValid)
{
var model = Db.Set<T>();
// update existing records updateValues.Update.Where(updateValues.IsValid).ForEach(updateValue => UpdateModel(model.Single(e => e.Id == updateValue.Id), null, null, excludeProperties: new[] { "Deviation" }));
// apply changes
Db.SaveChanges();
}
else
{
throw new Exception("Model is invalid");
}
return GridViewPartial();
}
公共虚拟操作结果批更新(MVCXGridViewBatchUpdateValue更新值)
{
if(ModelState.IsValid)
{
var model=Db.Set();
//更新现有记录updateValues.update.Where(updateValues.IsValid).ForEach(updateValue=>UpdateModel(model.Single(e=>e.Id==updateValue.Id)),null,null,excludeProperties:new[]{“偏差”});
//应用更改
Db.SaveChanges();
}
其他的
{
抛出新异常(“模型无效”);
}
返回GridViewPartial();
}
即使我排除了计算的属性偏差,我也会得到以下异常:
System.Data.dll中发生了类型为“System.Data.SqlClient.SqlException”的第一次意外异常
其他信息:列名“偏差”无效
知道我做错了什么吗
提前谢谢。请不要介意:很遗憾,你的方法不适合我的情况。我使用以下代码从sql server获取数据:
return Db.Database.SqlQuery(“EXEC GetReportings”).ToList()代码>。如果我对偏差属性使用数据注释[NotMapped],那么在从存储过程读取数据时它将不再被映射。如果您是从DB读取数据,那么它就不会被计算?据我所知,计算属性应该在应用程序中的某个地方计算。那么您可以添加另一个属性吗,使用NotMapped标记它,并使用它根据来自DB的列计算偏差?如果我添加属性NotMapped,它在更新记录时工作,但在另一方面,它在从数据库读取字段时不映射字段。只需使用NotMapped属性:不幸的是,您的方法不适合我的情况。我使用以下代码从sql server获取数据:return Db.Database.SqlQuery(“EXEC GetReportings”).ToList()代码>。如果我对偏差属性使用数据注释[NotMapped],那么在从存储过程读取数据时它将不再被映射。如果您是从DB读取数据,那么它就不会被计算?据我所知,计算属性应该在应用程序中的某个地方计算。那么您可以添加另一个属性吗,用NotMapped标记它,并使用它根据来自DB的列计算偏差?如果我添加属性NotMapped,它在更新记录时工作,但在另一边,它在从数据库读取字段时不映射字段。