[EFCore] DB에 이미 존재하는 사용자를 PK로 연결하려면?

2022. 9. 4. 22:09·공부/EFCore
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
'공부/EFCore' 카테고리의 다른 글
  • [EFCore] DTO 활용하기
  • [EFCore] DB에 존재하는 데이터 수정하기
  • [EFCore] SaveChanges를 호출하면 어떤 일이 일어날까
  • [EFCore] Entity State, 엔티티의 상태를 알아보자
돌멩이수프
돌멩이수프
Information technology
  • 돌멩이수프
    WHAT DOES "IT" STAND FOR?
    돌멩이수프
  • 전체
    오늘
    어제
    • 분류 전체보기 (239)
      • 언어 (73)
        • html (3)
        • css (1)
        • java (6)
        • C (26)
        • C++ (2)
        • C# (29)
      • 공부 (7)
        • Unity (43)
        • 게임 서버 (26)
        • 네트워크 (5)
        • 데이터베이스 (7)
        • EFCore (19)
        • 기타 (14)
        • Git (5)
        • 운영체제 (1)
        • 소프트웨어공학 (21)
      • 2024-여름 (12)
      • 자기 관리 (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    C#
    java
    Entityfamework
    백준
    unity
    C
    디자인패턴
    tcp
    Python
    라즈베리파이
    유니티
    coding
    EFCore
    네트워크
    게임서버
    HTML
    EntityFramework
    코딩
    C언어
    자바
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
돌멩이수프
[EFCore] DB에 이미 존재하는 사용자를 PK로 연결하려면?
상단으로

티스토리툴바