EF core

냐옹·2024년 4월 9일
0

.NET

목록 보기
5/31
  • CreatedAtAction
    CreatedAtAction메서드는 asp.net core에서 컨트롤러 내부의 액션 메서드에 의해서 생성된 새 리소스에 대한 HTTP 201 Created 응답을 생성할 때 사용한다. 이 메서드는 생성된 리소스의 URI를 Location 헤더에 포함하여 클라이언트에 반환한다. 이 방식은 RESTFUL API 디자인 원칙을 따른다. 그리고 이 방식은 클라이언트가 새로 생성된 리소스에 접근할 수 있는 방법을 제공한다.

첫번째 파라미터, 두번째 파라미터, 세번째 파라미터가 있는데
첫번째 파라미터에서는 참조할 메서드의 이름.. 근데 일치하지 않으면 에러가 뜨기 때문에 nameof 메서드를 적극이용한다.
두번째 파라미터는 반환할 메서드를 입력하면 된다.
세번째 파라미터에서는 주로 생성한 결과물의 엔티티 예를 들어서 result.Entity 이런식으로 하는데 보통 POST 요청에서 생성된 엔티티의 결과를 보여줄 때 유용하다.

  • FirstOrDefaultAsync() 그리고 Find() | FindAsync()
    FirstOrDefault 같은 경우에는 안에 조건식이 들어간다. 이 경우에 맞으면 맞는 첫번째 요소를 반환한다.
    Find 같은 경우에는 주키가 들어간다.
  • IActionResult 와 ActionResult
    API 메서드에서 IActionResult를 반환해도 되지만, 데이터와 함께 반환을 하려면, ActionResult<다루는 데이터모델> 을 반환하는 것이 좀 더 유연할 수 있다.
    이런 차이다. Ok()를 반환하는 것과 Ok(result)를 반환하는 것의 차이

var result = await _context.SaveChangesAsync(); 사실 이런 코드가 있다고 치면 중간에 한 단계가 생략되어있다.

Task task = _context.SaveChangesAsync();
var result = task 실행

이런식이다. await은 그냥 받아서 바로 실행시키는 것 뿐이다.

파일스트림
System.IO.FileStream (class)

  • Linq Functions
    링큐를 아는 것도 중요하지만, 람다랑 같이 쓰는 것도 중요
    예를 들어서 _context.Points.Where(x=> x>30).DescentOrderby(x=>x). Select ( ~~~
    이렇게 있을 때 x=>x 같은 경우는
    from element in x 이런식으로 봐라.

Select()
Where()
Distinct()
Empty()
DefaultIfEmpty()
Contains()
single() / singleOrDefault()
First() / FirstOrDefault()
All()
Any()
ToDictionary()
ThenBy() / ThenByDescending()
OrderBy() / OrderByDescending()
Reverse()
Average()

Union()
Intersect()
*** GroupJoin( param1, param2, param3, param4 )
1. param1 : 결합할 두번째 컬렉션
2. param2 : 첫번째 컬렉션의 키 선택자
3. param3 : 두번째 컬렉션의 키 선택자
4. resultSelector : 결과 선택자

사용자 정의 타입으로 원하는 것만 골라서 쏙쏙 쓰는 걸 갖다가 다이나믹 링큐라고 한다고 한다.
보통 이는 var linqResult = from ~~ in ~~
select( x => new { ~~} )
같이 작성하지만, 쿼리식의 형을 var가 아니라 dynamic으로 정해주어야 할 때가 있다. 이것은 클래스 안
일단 형을 정해주지 않으면 인텔리센스에서 어떠한 도움도 받을 수 없다. 하지만, 형에서 자유로워지는 것은 좋긴하다. (디버깅해서 형을 확인한다음 정해줘도 괜찮긴하다 )

람다에서 var lambdaResults = data.Where(condition);
보통 안에서 우리는 x => x > 3으로 하지만
이건 익명함수 즉 public bool condition(Book b){
return b.quantity >3 }

이런게 들어가 있는 셈
from element in data
where element.quantity > 3
select element
이 쿼리 표현식과 같은 의미를 가지지만 내부적으로는 동작이 완전히 다르다.
SQL 식과 , 함수형 전개의 차이..

  • yield
    반복자를 구현할때 사용된다. 이 키워드는 IEnumerable, IEnumerable, IEnumerator, IEnumerator를 구현하는 메서드, 프로퍼티, 인덱서 내에서 사용되며, 컬렉션의 각 요소를 하나씩 반환하는데 사용된다.
    yield를 사용하면 개발자가 반복자를 수동으로 작성하는 복잡성을 피할 수 있고, 컴파일러가 자동으로 필요한 상태머신을 생성한다.
    두가지 사용 예시가 있다.
  1. yield return
    A. 컬렉션의 다음요소를 반환한다.
    B. yield return이 호출될 때마다 현재 코드의 실행상태는 저장되며, 다음 호출 시에는 바로 그 지점부터 실행이 재개된다.
    C. 이를 통해서 메서드의 실행을 일시중지하고, 제어를 호출자에게 반환한 후, 다음 호출에서 중단된 부분부터 실행을 계속할 수 있다.
  2. yield break
    A. 이 구문은 반복을 완전히 종료하고, 반복자의 사용을 중단한다.
    B. yield break을 사용하면 컬렉션의 나머지 요소를 건너뛰고 반복을 즉시 종료할 수 있다.

0개의 댓글