ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [asp.net core] EntityFramwork Core Oracle 연동하기
    C#(asp.net | asp.net core) 2021. 7. 9. 15:58
    728x90
    728x90

    Visual Studio 에서 EntityFramework Core와 Oracle 이 연동하는 방법을 알아보겠다

    우선 EntityFramework Core와 Oracle EntityFramework Core를 설치한 상태이다

     

     

     

    Model 생성

    Models 폴더에 DB에 저장할 객체 정의하는 클래스를 저장한다

    예를 들어 File에 대한 정보를 저장할 UploadFile 이라는 클래스를 생성해보자

    using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;
    using System.Linq;
    using System.Threading.Tasks;
    
    namespace VolvoWebDocMVC.Models
    {
        public class UploadFile
        {
            [Key]
            public string filePath { get; set; }
    
            [Required]
            public string fileName { get; set; }
    
            [Required]
            public string fileExt { get; set; }
    
        }
    }

    각 멤버변수별로 getter, setter 를 생성해주고 변수의 특성을 지정해준다

    [Key] : Primary 역할, [Required] : null 값 불가

     

     

     

    DBContext 생성

    프로젝트에 DataContext 폴더를 생성한다

    클래스를 생성한다(필자는 프로젝트명과 연관지어 작성하였다)

     

    using Microsoft.EntityFrameworkCore;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Threading.Tasks;
    using VolvoWebDocMVC.Models;
    
    namespace VolvoWebDocMVC.DataContext
    {
        public class WebDocDBContext : DbContext
        {
        	// 1. DB로 가져올 객체를 선언한다
            public DbSet<UploadFile> files { get; set; }
    
            // 2. TNS정보를 입력하여 Oracle과 연동한다
            // xxx는 사용자에 맞게 입력하면 된다 
            protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
            {
                optionsBuilder.UseOracle(
                		@"Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xxx.xxx.xxx.x)(PORT=xxxx))(CONNECT_DATA=(SERVICE_NAME=xxxx))); 
                		User Id=xxxx;Password=xxxx;");
            }
    
            // EntityFramework로 DB Table을 만든게 아니라
            // 기존 DB Table을 사용하기 때문에
            // Model 데이터와 Mapping 필요
            protected override void OnModelCreating(ModelBuilder modelBuilder)
            {
                modelBuilder.Entity<UploadFile>(entity =>
                {
                    // 첫번째 인자는 Table명, 두번째 인자는 DB UserId를 입력하면된다
                    entity.ToTable("xxxx", "xxxx");
    
                    entity.Property(e => e.filePath).HasColumnName("FILEPATH");
                    entity.Property(e => e.fileName).HasColumnName("FILENAME");
                    entity.Property(e => e.fileExt).HasColumnName("FILEEXT");
                });
            }
        }
    }

     

     

    이러면 Oracle 연동 및 기존 Table과 Model Mapping까지 완료했다 

    728x90
    728x90
Designed by Tistory.