작성
·
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 모델링에 관한 노트 영상을 만들어 놓으셨다고 합니다. 이 노트 영상에서는 모델에 인덱스를 추가하는 방법뿐만 아니라 다양한 모델링 관련 내용을 다루고 있으므로 참고하실 수 있을 것 같습니다.
더 자세한 내용을 원하신다면 위 링크를 방문하여 강사님의 답변을 확인하시는 것이 좋을 것 같습니다.