cs 파일에 작성한 코드를 기반으로 데이터베이스를 작성하고 연동해보자
Service 프로젝트에 Data 폴더를 추가하고
nuget 패키지에서 엔티티코어와 sql서버를 설치, 닷넷 sdk가 5버전이라 둘다 5버전으로 설치했다
• db 연동
sql 서버를 실행해서 localhost, 원도우 인증으로 시작한다
새 데이터베이스 만들기로 하고 CodeFirstDB를 생성
로그인 쪽에도 test라는 이름으로 CodeFirstDB를 사용할 사용자를 만들어주었다
test 1111으로 생성
appsettings.json에 db 접속 가능하게 사용자를 추가해주었다
{
//db 접속
//DB접속정보
"ConnectionStrings": {
"DefaultConnection": "Server=localhost;Database=CodeFirstDB;User Id=test;Password=1111;"
//,"DBFirstDBConnection": "Server=localhost;Database=DBFirstDB;User Id=test;Password=1111;"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*"
}
startup.cs도 ConfigureServices 메서드 부분에 db 사용과 마이그레이션과 관련된 부분을 추가한다
//db 추가
services.AddDbContext<CodeFirstDB>(options =>
options.UseSqlServer(connectionString:Configuration.GetConnectionString(name: "DBFirstDBConnection"),
sqlServerOptionsAction:mig => mig.MigrationsAssembly(assemblyName:"MVC.Migrations")));
• db 테이블 수정, 다다대 해소
유저 - 역할 다대다 관계를 해소하기 위해서
유저 - 유저역할 - 역할로 일대다 관계를 만들어준다
유저와 역할에서 아래처럼 일(자기 테이블)대다(유저역할 테이블)로 리스트로 연결해주고
//fk 지정
[ForeignKey("UserID")]
public virtual ICollection<UserRolesByUser> UserRolesByUsers { get; set; }
[ForeignKey("RoleId")]
public virtual ICollection<UserRolesByUser> UserRolesByUsers { get; set; }
유저역할 테이블은 두 테이블과 일대일로 연결해준다
public virtual User User { get; set; }
public virtual UserRole UserRole { get; set; }
위 방식으로 다대다 연결을 해소시킬 수 있다
'C# > ASP.NET' 카테고리의 다른 글
DI (1) | 2024.10.05 |
---|---|
MVC 프로젝트 시작하기 (0) | 2024.10.05 |