>

우리는 EFCore에서 단일 항목을 얻는 3 가지 방법이 있습니다. FirstOrDefaultAsync()  (기본 값이 반환되지 않은 버전 포함, 우리는 또한 SingleOrDefaultAsync()  그리고 아마도 FindAsync() 와 같은 목적으로 더 .

LastOrDefaultAsync()

각각의 차이점을 알고 싶습니다. 지금까지 내가 아는 것은 var findItem = await dbContext.TodoItems .FindAsync(request.Id) .ConfigureAwait(false); var firstItem = await dbContext.TodoItems .FirstOrDefaultAsync(i => i.Id == request.Id) .ConfigureAwait(false); var singleItem = await dbContext.TodoItems .SingleOrDefaultAsync(i => i.Id == request.Id) .ConfigureAwait(false);  먼저 주어진 조건을 얻으려면 (보통 이것을 사용하면 둘 이상의 항목이 조건을 만족할 수 있다는 것을 알기 때문에) FirstOrDefaultAsync() 를 사용합니다  찾을 수있는 일치 항목이 하나뿐이라는 것을 알고 있기 때문에  기본 키가 지정된 항목을 가져옵니다.

나는 SingleOrDefaultAsync() 생각  & FindAsync()  항상 데이터베이스에 도달하고 (이것에 대해 확실하지 않음) FirstOrDefaultAsync()  이것이 바로 Microsoft 문서입니다 :

와이즈 비즈

우리의 주어진 조건이 SingleOrDefaultAsync() 에 사용된다면 FindAsync()  그리고

Asynchronously finds an entity with the given primary key values. If an entity with the given primary key values exists in the context, then it is returned immediately without making a request to the store. Otherwise, a request is made to the store for an entity with the given primary key values and this entity, if found, is attached to the context and returned. If no entity is found in the context or the store, then null is returned.

 기본 키는실제 차이가 있습니까?

제 생각에 그들이 처음 사용될 때는 항상 db를 누르십시오.다음 전화는 어떻습니까?. 그리고 아마도 EFCore는 동일한 컨텍스트를 사용하여 FirstOrDefault() 의 값을 얻을 수 있습니다.  그리고 SingleOrDefault()  그것은 FindAsync() 에 대한 것처럼 ,아닙니까?.

FirstOrDefault()
  • 답변 # 1

    FindAsync

    와이즈 비즈

    SingleOrDefaultAsync

    와이즈 비즈

    FirstOrDefaultAsync

    와이즈 비즈

    https://docs.microsoft.com/en-us/aspnet/core/data/ef-rp/crud?view=aspnetcore-2.2#singleordefaultasync-vs-firstordefaultasync

    In much of the scaffolded code, FindAsync can be used in place of FirstOrDefaultAsync.

관련 자료

  • 이전 xcode - 인터페이스 빌더의 탭 순서?
  • 다음 sql server - SQL 데이터베이스를 Azure에 업로드