- 강제이동
- asp.net dropdownlist
- 하드 마이그레이션
- asp.net core Select
- 맥 오라클설치
- javascript redirection
- 말줄임표시
- asp.net Select
- ViewBag
- simpe ftp
- 원격ftp
- ViewData
- TempData
- JavaScript
- 404에러페이지
- Mac Oracle
- ASP.Net Core 404
- javascript 바코드 생성
- jquery 바코드생성
- SSD 복사
- asp ftp
- 타임피커
- swagger 500 error
- 하드 윈도우 복사
- django 엑셀불러오기
- 바코드 생성하기
- asp.net core swagger
- XSS방어
- XSS PHP
- php 캐쉬제거
웹개발자의 기지개
[ASP.Net Core] 복잡한 데이터 모델 (1대다대1) 본문

위와 같은 복잡한 모델을 가진 경우, EntityFramework 를 활용하여 코딩을 하는 아주 좋은 예제이다.
1대다대1
Student - Enrollment - Course : 학생 - 수강 등록 - 교과 과정
[Student]
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace ContosoUniversity.Models
{
public class Student
{
public int ID { get; set; }
[Required]
[StringLength(50)]
[Display(Name = "Last Name")]
public string LastName { get; set; }
[Required]
[StringLength(50)]
[Column("FirstName")]
[Display(Name = "First Name")]
public string FirstMidName { get; set; }
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
[Display(Name = "Enrollment Date")]
public DateTime EnrollmentDate { get; set; }
[Display(Name = "Full Name")]
public string FullName
{
get
{
return LastName + ", " + FirstMidName;
}
}
public ICollection<Enrollment> Enrollments { get; set; }
}
}
|
cs |
[Enrollment]
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace ContosoUniversity.Models
{
public enum Grade
{
A, B, C, D, F
}
public class Enrollment
{
public int EnrollmentID { get; set; }
public int CourseID { get; set; }
public int StudentID { get; set; }
[DisplayFormat(NullDisplayText = "No grade")]
public Grade? Grade { get; set; }
public Course Course { get; set; }
public Student Student { get; set; }
}
}
|
cs |
[Course]
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace ContosoUniversity.Models
{
public class Course
{
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Display(Name = "Number")]
public int CourseID { get; set; }
[StringLength(50, MinimumLength = 3)]
public string Title { get; set; }
[Range(0, 5)]
public int Credits { get; set; }
public int DepartmentID { get; set; }
public Department Department { get; set; }
public ICollection<Enrollment> Enrollments { get; set; }
public ICollection<CourseAssignment> CourseAssignments { get; set; }
}
}
|
cs |
[Department]
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace ContosoUniversity.Models
{
public class Department
{
public int DepartmentID { get; set; }
[StringLength(50, MinimumLength = 3)]
public string Name { get; set; }
[DataType(DataType.Currency)]
[Column(TypeName = "money")]
public decimal Budget { get; set; }
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
[Display(Name = "Start Date")]
public DateTime StartDate { get; set; }
public int? InstructorID { get; set; }
public Instructor Administrator { get; set; }
public ICollection<Course> Courses { get; set; }
}
}
|
cs |
Instructor - CourseAssignment - Course : 선생님 - 교과과정 할당 - 교과 과정
[Instructor]
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace ContosoUniversity.Models
{
public class Instructor
{
public int ID { get; set; }
[Required]
[Display(Name = "Last Name")]
[StringLength(50)]
public string LastName { get; set; }
[Required]
[Column("FirstName")]
[Display(Name = "First Name")]
[StringLength(50)]
public string FirstMidName { get; set; }
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
[Display(Name = "Hire Date")]
public DateTime HireDate { get; set; }
[Display(Name = "Full Name")]
public string FullName
{
get { return LastName + ", " + FirstMidName; }
}
public ICollection<CourseAssignment> CourseAssignments { get; set; }
public OfficeAssignment OfficeAssignment { get; set; }
}
}
|
cs |
[CourseAssignment]
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace ContosoUniversity.Models
{
public class CourseAssignment
{
public int InstructorID { get; set; }
public int CourseID { get; set; }
public Instructor Instructor { get; set; }
public Course Course { get; set; }
}
}
|
cs |
[Course]
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace ContosoUniversity.Models
{
public class Course
{
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Display(Name = "Number")]
public int CourseID { get; set; }
[StringLength(50, MinimumLength = 3)]
public string Title { get; set; }
[Range(0, 5)]
public int Credits { get; set; }
public int DepartmentID { get; set; }
public Department Department { get; set; }
public ICollection<Enrollment> Enrollments { get; set; }
public ICollection<CourseAssignment> CourseAssignments { get; set; }
}
}
|
cs |
https://learn.microsoft.com/ko-kr/aspnet/core/data/ef-mvc/complex-data-model?view=aspnetcore-6.0
자습서: 복잡한 데이터 모델 만들기 - ASP.NET MVC 및 EF Core 사용
이 자습서에서는 더 많은 엔터티 및 관계를 추가하고, 서식 지정, 유효성 검사 및 매핑 규칙을 지정하여 데이터 모델을 사용자 지정합니다.
learn.microsoft.com
자습서: 관련 데이터 읽기 - ASP.NET MVC 및 EF Core 사용 | Microsoft Learn
자습서: 관련 데이터 읽기 - ASP.NET MVC 및 EF Core 사용
이 자습서에서는 관련 데이터 즉, Entity Framework에서 탐색 속성으로 로드하는 데이터를 읽고 표시합니다.
learn.microsoft.com
자습서: 관련 데이터 업데이트 - ASP.NET MVC 및 EF Core 사용 | Microsoft Learn
자습서: 관련 데이터 업데이트 - ASP.NET MVC 및 EF Core 사용
이 자습서에서는 외래 키 필드 및 탐색 속성을 업데이트하여 관련 데이터를 업데이트합니다.
learn.microsoft.com
자습서: 동시성 처리 - ASP.NET MVC 및 EF Core 사용 | Microsoft Learn
자습서: 동시성 처리 - ASP.NET MVC 및 EF Core 사용
이 자습서에는 여러 사용자가 동시에 같은 엔터티를 업데이트하는 경우 충돌을 처리하는 방법을 보여 줍니다.
learn.microsoft.com
자습서: 상속 구현 - ASP.NET MVC 및 EF Core 사용 | Microsoft Learn
자습서: 상속 구현 - ASP.NET MVC 및 EF Core 사용
이 자습서에서는 ASP.NET Core 애플리케이션에서 Entity Framework Core를 사용하여 데이터 모델에서 상속을 구현하는 방법을 보여 줍니다.
learn.microsoft.com
5부. ASP.NET Core에서 EF Core를 사용한 Razor Pages - 데이터 모델
Razor Pages 및 Entity Framework 자습서 시리즈의 5부입니다.
learn.microsoft.com
'ASP.NET > ASP.NET Core' 카테고리의 다른 글
| [ASP.Net Core] Swagger Errors - Failed to load API definition. 500번 error (0) | 2025.03.12 |
|---|---|
| [ASP.NET Core] .NET 관련 좋은 커뮤니티 사이트 소개 (0) | 2025.01.25 |
| [ASP.Net Core] Visual Studio 2022 에서 과거 WebForm 버전 이용하기 (0) | 2024.03.10 |
| [ASP.Net Core] Custom Error Page ( 사용자 정의 Error 페이지 만들기 ) (1) | 2024.03.09 |
| [ASP.Net Core] RESTful API with .NET Core (.NET 7) - Full Course for Beginners (0) | 2024.03.09 |