728x90
1️⃣ Tracked Instance를 얻어온다.
2️⃣ 데이터를 연결한다.
매우 단순하다...
public class DbCommands
{
public static void InitializeDB(bool forceReset = false)
{
using (AppDbContext db = new AppDbContext())
{
if (!forceReset && (db.GetService<IDatabaseCreator>() as RelationalDatabaseCreator).Exists())
return;
db.Database.EnsureDeleted();
db.Database.EnsureCreated();
CreateTestData(db);
Console.WriteLine("DB Initialized");
}
}
public static void CreateTestData(AppDbContext db)
{
var rookiss = new Player() { Name = "Rookiss" };
var faker = new Player() { Name = "Faker" };
var deft = new Player() { Name = "Deft" };
List<Item> items = new List<Item>()
{
new Item()
{
TemplateId = 101,
CreateDate = DateTime.Now,
Owner = rookiss
},
new Item()
{
TemplateId = 102,
CreateDate = DateTime.Now,
Owner = faker
},
new Item()
{
TemplateId = 103,
CreateDate = DateTime.Now,
Owner = deft
}
};
Guild guild = new Guild()
{
GuildName = "T1",
Members = new List<Player>() { rookiss, faker, deft }
};
db.Items.AddRange(items);
db.Guilds.Add(guild);
db.SaveChanges();
{
// PK 연결 과정
var owner = db.players.Where(p => p.Name == "Rookiss").First();
Item item = new Item()
{
TemplateId = 300,
CreateDate = DateTime.Now,
Owner = owner
};
db.Items.Add(item);
db.SaveChanges();
}
}
}
맨 밑에 있는 PK 연결 과정만 보면 된다. 미리 owner를 만들어놓고 db에 올려주니 사진에서처럼 정상적으로 TemplateId 300인 아이템이 추가됐다.
728x90
'공부 > EFCore' 카테고리의 다른 글
[EFCore] DTO 활용하기 (0) | 2022.09.05 |
---|---|
[EFCore] DB에 존재하는 데이터 수정하기 (0) | 2022.09.05 |
[EFCore] SaveChanges를 호출하면 어떤 일이 일어날까 (0) | 2022.09.04 |
[EFCore] Entity State, 엔티티의 상태를 알아보자 (0) | 2022.09.04 |
[EFCore] Eager Loading / Explicit Loading / Select Loading (0) | 2022.09.02 |