인프런 커뮤니티 질문&답변

한일상님의 프로필 이미지
한일상

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part6: 웹 서버

EF Core 데이터 관계 모델링

DB 설정 관련해서 질문 드립니다

작성

·

290

0

[Table("UserTable")]

public class UserData

{

[Key] public string UserId { get; set; }

public string? Token { get; set; }

[MaxLength(32)]

public string? UserName { get; set; }

public DateTime? CreateTime { get; set; }

public BanData? Ban { get; set; }

public ICollection<MailData> OwnMails { get; set; }

public ICollection<GetMailData> GetMails { get; set; }

}

[Serializable] public class BanData

{

public DateTime Start { get; set; }

public DateTime End { get; set; }

public int State { get; set; }

public string DescKey { get; set; }

// Foreign Key

public string UserId { get; set; }

public UserData User { get; set; }

}

public class MailData

{

/// <summary> 우편물 구분 값 </summary>

[Key] public long Id { get; set; }

/// <summary> 발송일 </summary>

public DateTime SendDate { get; set; }

/// <summary> 우편물 받아야하는 기간 </summary>

public DateTime EndDate { get; set; }

/// <summary> 우편 내용물 </summary>

public string Body { get; set; }

/// <summary> 보낸이 ex)GM, DEV 등등 </summary>

public string Sender { get; set; }

// Foreign Key

public string UserId { get; set; }

public UserData User { get; set; }

}

/// <summary> 우편물 획득 시 </summary>

public class GetMailData

{

/// <summary> 우편물 구분 값 </summary>

[Key] public long Id { get; set; }

/// <summary> 우편물 시간제한에 의한 삭제 </summary>

public bool IsTimeOut { get; set; }

/// <summary> 받은 날 </summary>

public DateTime GetDate { get; set; }

/// <summary> 우편 내용물 </summary>

public string Body { get; set; }

/// <summary> 보낸이 ex)GM, DEV 등등 </summary>

public string Sender { get; set; }

// Foreign Key

public string UserId { get; set; }

public UserData User { get; set; }

}

이렇게 SharedData.Models 정의를 해서
사용을 하고자 합니다 UserData에서만 DB 컬럼으로 활용을 하고싶습니다

 

ApplicationDbContext.cs

protected override void OnModelCreating(ModelBuilder modelBuilder)

{

base.OnModelCreating(modelBuilder);

modelBuilder.Ignore<BanData>();

modelBuilder.Ignore<MailData>();

modelBuilder.Ignore<GetMailData>();

}

에는 DB로 만들어지지 않았으면 해서 예외처리를 추가했습니다

 

UserTable

  • UserId

  • Token

  • UserName

  • CreateTime

  • BanData Ban

  • ICollection<MailData> OwnMails

  • ICollection<GetMailData> GetMails

이런식으로 생성하게 하려면 어떻게해야 하나요?

답변 3

0

한일상님의 프로필 이미지
한일상
질문자

자답입니다

 

UserData user = UserDatas

.Where(user => user.UserId == userId)

.Include(user => user.MailDatas)

.Include(user => user.GetMailDatas)

.Include(user => user.BanData)

.FirstOrDefault();

 

위 질문처럼 포렌키로 처리를 하고 나서 DB에서 긁어올때 이렇게 연동처리를 하면 정상적으로 처리되는것으로 확인했습니다

0

한일상님의 프로필 이미지
한일상
질문자

넵 우선 감사합니다

제가 원하는 것은
DB에 MailData, BanData, GetMailData가 생성되지 않고
UserTable에만 존재했으면 하는 겁니다
{

"UserId":"ID",

"Token": null,

"UserName":"Name",

"Ban":{

벤 정보

},

"OwnMails":[

{

아이템 정보 1

},

{

아이템 정보 2

}

],

"GetMails":[]

}



이런식으로 UserTable에 값이 들어갈 수 있는 방법이 있는지 궁금합니다 만약 불가능하다면
GetMailData, MailData, BanData 도 DB Table에 포함이 되어 포렌키로 사용을 해야하는지도요

감사합니다

0

안녕하세요, 인프런 AI 인턴입니다.

질문하신 내용과 관련하여 유사한 문제를 해결한 기존 답변을 찾았습니다.

강의 “[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part6: 웹 서버”에서 다루고 있는 Entity Framework Core의 모델링과 관련된 질문이 있는데요, Rookiss 강사님이 EF 모델링에 관한 노트 영상을 만들어 놓으셨다고 합니다. 이 노트 영상에서는 모델에 인덱스를 추가하는 방법뿐만 아니라 다양한 모델링 관련 내용을 다루고 있으므로 참고하실 수 있을 것 같습니다.

  • 해당 답변 URL: Db model 에 index 추가 및 Identity관련
  • 강사님 답변 내용 요약: EF 모델링에 관한 노트 영상을 참고하시기 바랍니다. 해당 영상에서 모델에 인덱스를 추가하는 방법을 포함해 다양한 모델링 관련 내용을 다루고 있습니다.

더 자세한 내용을 원하신다면 위 링크를 방문하여 강사님의 답변을 확인하시는 것이 좋을 것 같습니다.

한일상님의 프로필 이미지
한일상

작성한 질문수

질문하기