일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 자바스크립트객체리터럴
- 자바스크립트함수
- 인프런강의
- Blazor
- slice
- 고차함수
- 자바스크립트파라미터
- 객체리터럴
- 이벤트리스너
- 자바스크립트recude
- EntityFramework
- .NET
- 인프런자바스크립트
- NPM
- 인프런강좌
- HTTP
- 자바스크립트틱택토
- 인프런무료강좌
- 인프런
- 비주얼스튜디오
- sort
- 인프런인강
- 인터넷프로토콜
- 틱택토구현
- 자바스크립트
- 코딩
- 콜백함수
- 객체의비교
- 제로초
- c#
- Today
- Total
샐님은 개발중
ExecuteUpdate and ExecuteDelete 본문
https://learn.microsoft.com/en-us/ef/core/saving/execute-insert-update-delete
ExecuteUpdate and ExecuteDelete - EF Core
Using ExecuteUpdate and ExecuteDelete to save changes with Entity Framework Core
learn.microsoft.com
위 참고 사이트를 나름대로 요약한 내용입니다.
ExecuteUpdate and ExecuteDelete : EF의 전통적인 변화 추적 과 SaveChanges() 메소드를 사용하지 않고 database에 데이터를 저장하는 방법.
1. ExecuteDelete
1) 전통적인 방법 SaveChanges() 사용
async Task OnDelete()
{
using (var context = _dbContextFactory.CreateDbContext())
{
foreach(var i in context.Blogs.Where(x => x.Rating < 4))
{
context.Blogs.Remove(i);
}
context.SaveChanges();
}
}
: 이 방법은
1) 조건에 만족하는 모든 blog에 대한 질의를 database에 하고 이러한 모든 인스턴스에 대해 추적을 구체화 한다.
2) entity framework의 변경 추적(change tracker) 에게 각각의 blog가 삭제되어야하고, SaveChanges()(각각, 또는 전체의 blog에 대한 delete 문을 만드는 )를 호출해서 이러한 변화를 적용해야 한다고 지시한다.
위와 같은 일을 하는 (perform) ExecuteDelete API :
context.Blogs.Where(x => x.Rating < 3).ExecuteDelete();
- EF 가 database에게 SQL 의 delete 문을 실행하도록 지시한다.
DELETE FROM B
FROM BLOG AS B
WHERE B.Rating >3
- 이것은 어떠한 데이터의 로딩(loading) 도 없이 EF 의 변경추적(change tracker)의 연관도 없다.
2. ExecuteUpdate
- Rather than deleting thease Blog, what if we wanted to change a property to indicate that they should be hidden instead? <- 해석이 어렵다.
- 구글 변역 :
해당 블로그를 삭제하는 대신 해당 블로그를 숨겨야 함을 나타내기 위해 속성을 변경하고 싶다면 어떻게 해야 할까요?
ExecuteUpdate 는 SQL 의 updatae 문과 비슷한 방법을 제공한다.
context.Blogs.Where(x => x.Rating < 3).ExecuteUpdate(setters => setters.SetProperty(b => b.BlogName , "블로그01"));
1. 어떤 blog가 영향을 받을지 결정하기 위해 LINQ 문을 사용한다.
2. 또한 매칭되는 blog에 적용되기 위한 변경하는 표현이 필요하다. -> 이것은 SetProperty를 호출함으로써 구현한다.
ExecuteUpdate 는 아래의 SQL 문을 발생시킨다.
UPDATE B
SET B.BlogName = '블로그01'
FROM Blog as b
where b.Rating <3
3. Updating multiple properties
- ExecuteUpdate 는 한 메소드 호출에서 다중 속성을 변경하는 것을 허용한다.
context.Blogs.Where(x => x.Rating < 3).ExecuteUpdate(setters => setters.SetProperty(x => x.Rating, 0).SetProperty(x => x.BlogName, "s블로그"));
UPDATE B
SET B.RATING =0,
SET B.BlogName ='s블로그'
FROM BLOG AS B
WHERE B.RATING <3
'Entity Framework' 카테고리의 다른 글
2. Visual Studio에서 Blazor + Entity Framework 시작하기 (0) | 2024.01.13 |
---|---|
1. Visual Studio에서 Blazor + Entity Framework 시작하기 (0) | 2024.01.13 |