[英]Update Entity Not Being Tracked By Entity Framework
我正在使用.NET Core 2.0和Entity Framework Core構建API。
我有一個用戶數據庫。 當調用登錄URI時,我在數據庫中找到用戶,如下所示:
User user = _usersRepository.GetUserByEmail(model.Email);
然后,我創建一個令牌(Guid),該令牌與剛獲取的用戶對象一起存儲在字典中。 令牌返回給使用者,然后需要進行授權。
對於需要授權的控制器操作,自定義屬性從字典中獲取當前用戶對象(使用其令牌),然后使用HttpContext.Items將其傳遞給控制器。
我現在在控制器中有當前登錄的User對象。
在控制器內部,我想更改此用戶對象的屬性,然后為該用戶更新數據庫條目。
這是我想做的(簡化):
User authenticatedUser = HttpContext.Items.TryGetValue("authenticatedUser" ...)
authenticatedUser.Username = "John Doe";
_usersRepository.SaveChanges();
以下工作,但是引入了一個額外的數據庫查詢,因為我在那里將用戶對象作為authenticatedUser
,所以這看起來毫無意義且效率低下:
User authenticatedUser = HttpContext.Items.TryGetValue("authenticatedUser" ...)
User user = _usersRepository.GetUserById(authenticatedUser.Id);
user.Username = "John Doe";
_usersRepository.SaveChanges();
如何保存對authenticatedUser
所做的更改而不必再次從數據庫中獲取?
我認為您正在尋找的是Attach
User authenticatedUser = HttpContext.Items.TryGetValue("authenticatedUser" ...)
if(authenticatedUser != null)
{
_usersRepository.Attach(authenticatedUser);
authenticatedUser.Username = "John Doe";
_usersRepository.SaveChanges();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.