1
我有一个属性,在我的实体上是必需的。在将实体添加到数据库后,该属性由系统填充。从这里开始,这个属性不应该改变。该属性也永远不会传递给客户端。更新时需要属性EF6
所以,现在当用户编辑这个实体,并将其传递给我的服务层时,该属性为空。是否有可能告诉EF,在调用SaveChangesAsync之前,不应该修改此属性,也不要更新,或者是我唯一的选择,从数据库检索值并使用相同的值填充编辑的实体?
这里是只有属性标识和名称被传递到客户端我的实体
public myEntity() {
public long Id { get; set; }
public string Name { get; set; }
public string SystemProperty { get; set; }
}
的例子。当AddAsync在我的服务中调用时,我自己填充SystemProperty。
这里是我的UpdateAsync,这使的DbContext扔
SystemProperty的例外是必需的
public override Task<int> UpdateAsync(Module updated)
{
_context.Modules.Attach(updated);
// do not update
_context.SetModified(updated, "SystemProperty", false);
return _context.SaveChangesAsync();
}
我SetModified之法一直反对我的DbContext创建,所以我可以单元测试方法。如你所见,我以为我可以使用IsModified = false,但似乎并没有忽略这个属性。
我有什么选择?
我认为残疾人验证领域是我缺少的。你知道该怎么做吗?你可以禁用它仅用于更新吗? – Gillardo
已更新的答案。 – ranquild
想想我可能会从数据库中获取实体并填充属性,那么它将是正确的,我可以对所有其他字段进行验证。如果我可以关闭对单个字段的验证,我会很高兴,但不知道关闭它的句号。 – Gillardo