【发布时间】:2015-06-21 04:55:35
【问题描述】:
我的实体需要一个属性。将实体添加到数据库后,系统会填充该属性。从这里开始,这个属性永远不会改变。此属性也永远不会传递给客户端。
因此,现在当用户编辑此实体并将其传递给我的服务层时,该属性为空。是否可以告诉 EF 这个属性不应该被修改并且永远不会更新,或者是我唯一的选择,从数据库中检索值并在调用 SaveChangesAsync 之前使用相同的值填充已编辑的实体?
这是我的实体的示例
public myEntity() {
public long Id { get; set; }
public string Name { get; set; }
public string SystemProperty { get; set; }
}
只有属性 Id 和 Name 被传递给客户端。当 AddAsync 在我的服务中调用时,我自己填充 SystemProperty。
这是我的 UpdateAsync,它使 DbContext 抛出异常
需要系统属性
public override Task<int> UpdateAsync(Module updated)
{
_context.Modules.Attach(updated);
// do not update
_context.SetModified(updated, "SystemProperty", false);
return _context.SaveChangesAsync();
}
我的 SetModified 方法已针对我的 DbContext 创建,因此我可以对该方法进行单元测试。
public void SetModified(object entity, string property, bool isModified)
{
this.Entry(entity).Property(property).IsModified = isModified;
}
如您所见,我认为我可以使用 IsModified = false,但这似乎并没有忽略该属性。
我有什么选择?
【问题讨论】:
标签: c# asp.net .net entity-framework entity-framework-6