본문 바로가기
C#/ASP.NET

데이터베이스 연동 code first 방식

by hoshi03 2024. 10. 6.

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