728x90
Disconnected Update는 Update 단계가 이어서 일어나지 않고, 끊겨서 일어나는 경우다.
예를 들어 홈페이지에서 개인정보를 수정한다고 했을 때 홈페이지는 DB에서 닉네임, 이메일 등의 정보를 끌어와 우리에게 보여준다. 우리는 기존 정보를 확인한 뒤 나중에 정보를 수정하는 과정을 겪는다. 이게 바로 Disconnected Update다.
Dinsconnected Update에도 2가지 다른 방식이 있다. Reload와 Full Update다.
1️⃣ Reload
필요한 정보만 보내서 수정한다.
public static void UpdateByReload()
{
// 외부에서 수정을 원하는 데이터의 ID / 정보 넘겨줬다고 가정
Console.WriteLine("Input GuildId");
Console.Write(" > ");
int id = int.Parse(Console.ReadLine());
Console.WriteLine("Input GuildName");
Console.Write(" > ");
string name = Console.ReadLine();
using (AppDbContext db = new AppDbContext())
{
Guild guild = db.Find<Guild>(id);
guild.GuildName = name;
db.SaveChanges();
}
}
변경하고 싶은 길드의 이름을 입력하면 그 이름만 받아서 DB에 있는 길드 이름을 바꿔준다. 최소한의 정보로 Update를 할 수 있다는 장점이 있지만 Read를 2번 해야한다는 단점이 있다. 하지만 이 단점이 매우 작고 장점이 크기 때문에 사용하는 편이 좋다.
2️⃣ Full Update
모든 정보를 다 보내고 받아서 Entity를 아예 새로 만드는 방식이다.
public static void UpdateByFull()
{
Guild guild = new Guild()
{
GuildId = 1,
GuildName = "TestGild"
};
using (AppDbContext db = new AppDbContext())
{
db.Guilds.Update(guild);
db.SaveChanges();
}
}
모든 정보를 새로 보내서 내용을 수정할 수 있다. DB에 재차 Read할 필요는 없지만 모든 정보를 다 알아야 데이터를 수정할 수 있다는 단점이 있다. 때문에 보안에 매우 취약하다.
728x90
'공부 > EFCore' 카테고리의 다른 글
[EFCore] Relationship Data 수정 하기 (0) | 2022.09.06 |
---|---|
[EFCore] Pricipal 데이터가 없을 때 Dpendent 데이터가 존재할 수 있는가? (0) | 2022.09.05 |
[EFCore] DTO 활용하기 (0) | 2022.09.05 |
[EFCore] DB에 존재하는 데이터 수정하기 (0) | 2022.09.05 |
[EFCore] DB에 이미 존재하는 사용자를 PK로 연결하려면? (0) | 2022.09.04 |