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