EF 에서 CodeFirst 모드 만 들 기

7517 단어
하나, 무슨 일이 야?
EF 4.1 에 서 는 Code First 를 지원 하기 시작 했다.이런 방식 은 분야 디자인 모델 에서 매우 유용 하 다.Code First 모드 를 사용 하면 영역 디자인 에 전념 할 수 있 습 니 다. 필요 에 따라 한 분야 의 대상 에 게 클래스 집합 을 만 들 수 있 습 니 다. 먼저 데이터 베 이 스 를 디자인 한 다음 에 데이터 베이스 에 따라 클래스 를 디자인 할 수 있 습 니 다. Code - first APis 는 클래스 와 설정 을 바탕 으로 데이터 베 이 스 를 만 들 것 입 니 다.
워 크 플 로 는 영역 클래스 와 컨 텍스트 클래스 를 먼저 작성 합 니 다. 영역 클래스 에 맵 조건 을 추가 로 설정 합 니 다. - > F5 실행 프로그램 - > Code - First API 를 누 르 면 새로운 데이터 베 이 스 를 만 들 거나 영역 클래스 와 존재 하 는 데이터 베 이 스 를 매 핑 합 니 다. - > 테스트 데 이 터 를 데이터베이스 에 추가 합 니 다. - > 마지막 으로 프로그램 을 실행 합 니 다.
  • CodeFirst 모드 를 구축 하려 면 먼저 1. 당신 이 만 든 컨 텍스트 파일 에 대응 하 는 [참조] 아래 NuGet 패 키 지 를 통 해 Entity Framework 6.2.0 (또는 더 높 은 버 전) 을 다운로드 해 야 합 니 다. 2. 그리고 데이터 베이스 에 대응 하 는 실체 클래스 를 작성 하 십시오. 예 를 들 어
  • namespace Models
    {
        using System;
        using System.Collections.Generic;
        using System.Web.Script.Serialization;
        
        /// 
        ///   
        /// 
        public partial class Books
        {
            public Books()
            {
                this.OrderBooks = new HashSet();
                this.TemporaryCarts = new HashSet();
            }
        
            /// 
            ///   Id
            /// 
            public int Id { get; set; }
            /// 
            ///   
            /// 
            public string Title { get; set; }
            /// 
            ///   
            /// 
            public string Author { get; set; }
            /// 
            ///    Id
            /// 
            public int PublisherId { get; set; }
            /// 
            ///     
            /// 
            public System.DateTime PublishDate { get; set; }
            /// 
            ///     
            /// 
            public string ISBN { get; set; }
            /// 
            ///   
            /// 
            public decimal UnitPrice { get; set; }
            /// 
            ///   
            /// 
            public string ContentDescription { get; set; }
            /// 
            ///   
            /// 
            public string TOC { get; set; }
            /// 
            ///     Id
            /// 
            public int CategoryId { get; set; }
            /// 
            ///     
            /// 
            public int Clicks { get; set; }
        
            /// 
            ///     
            /// 
            public virtual Category Category { get; set; }
            /// 
            ///    
            /// 
            public virtual Publisher Publisher { get; set; }
    
            /// 
            ///       
            /// 
            [ScriptIgnore]
            public virtual ICollection OrderBooks { get; set; }
            /// 
            ///      
            /// 
            [ScriptIgnore]
            public virtual ICollection TemporaryCarts { get; set; }
        }
    }
    

    [위 에 이렇게 쓰 여 있 는 실 체 는 데이터베이스 시트, 필드 에 한 글자 도 다 르 지 않 게 대응 하여 쓰 여 있 습 니 다. 속성 이름과 데이터베이스 에 있 는 필드 이름 이 일치 하지 않 으 면 특성 제어, 메 인 키, 표 의 이름 을 통 해 제어 해 야 합 니 다.] EF6 가 매 핑 할 때 속성 이름 이 Id 이 므 로 기본 키 를 사용 합 니 다. 그렇지 않 으 면 key 를 추가 하면 지정 합 니 다. 예 를 들 어:
    /// 
        ///   
        /// 
        [Table("Books")]
        public partial class Books
        {
            public Books()
            {
                this.OrderBooks = new HashSet();
                this.TemporaryCarts = new HashSet();
            }
        
            /// 
            ///   Id    
            ///  
           [Key]
            public int Id { get; set; }
            /// 
            ///   
            /// 
            public string Title { get; set; }
            /// 
            ///   
            /// 
            public string Author { get; set; }
            /// 
            ///    Id
            /// 
            public int PublisherId { get; set; }
            /// 
            ///     
            /// 
            public System.DateTime PublishDate { get; set; }
            /// 
            ///     
            /// 
            public string ISBN { get; set; }
            /// 
            ///   
            /// 
            public decimal UnitPrice { get; set; }
            /// 
            ///   
            /// 
            public string ContentDescription { get; set; }
            /// 
            ///   
            /// 
            public string TOC { get; set; }
            /// 
            ///     Id
            /// 
            public int CategoryId { get; set; }
            /// 
            ///     
            /// 
            public int Clicks { get; set; }
        
            /// 
            ///     
            /// 
            public virtual Category Category { get; set; }
            /// 
            ///    
            /// 
            public virtual Publisher Publisher { get; set; }
    
            /// 
            ///       
            /// 
            [ScriptIgnore]
            public virtual ICollection OrderBooks { get; set; }
            /// 
            ///      
            /// 
            [ScriptIgnore]
            public virtual ICollection TemporaryCarts { get; set; }
        }
    

    3. 데이터베이스 에 대응 하 는 실 체 를 모두 쓴 후, 상하 문 조작 클래스 를 쓰기 시작한다
    namespace Models.db_set
    {
        /// 
        ///        
        /// 
        public class db_context:DbContext
        {
    
            //    
            public db_context():base("strConn")
            {
                    
            }
    
            public DbSet Books { get; set; }  //     
            public DbSet Category { get; set; } //       
            public DbSet Order { get; set; } //     
            public DbSet OrderBook { get; set; }  //       
            public DbSet Publisher { get; set; } //      
            public DbSet TemporaryCart { get; set; } //      
            public DbSet User { get; set; }   //     
            public DbSet UserRole { get; set; }   //       
            public DbSet UserState { get; set; }  //    
    
        }
    }
    
    

    4. 컨 텍스트 클래스 를 작성 한 후 마지막 으로 설정 파일 을 놓 아 데이터 베 이 스 를 연결 합 니 다. Web. config 의 노드 에 쓰기:
      
        
      
    

    이렇게 EF Code Frist 는 만들어 진 셈 이다.
    5. 웹 디 스 플레이 계층 호출 또는 3 층 에서 사용, var db = new dbcontext();var list = db. books. ToList () 를 발견 할 수 있 습 니 다.이 ToList ();방법 이 없 으 면 누 를 수 없습니다. 왜 냐 면 이 방법 이 없 기 때 문 입 니 다. 인용 이 추가 되 지 않 았 음 을 설명 합 니 다. 현재 이 라 이브 러 리 에 인용 을 추가 하여 현재 항목 을 탐색 하 는 \ \ packages \ \ EntityFramework. 6.2.0 \ libet 40 디 렉 터 리 에 EntityFramework. dll 과 EntityFramework. sql Server. dll 두 라 이브 러 리 파일 을 누 를 때 방법 을 누 를 수 있 습 니 다.이 럴 때 는 마음대로 비 벼 도 된다.
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using Models;
    
    namespace UI.Controllers
    {
        public class HomeController : Controller
        {
            // GET: Home
            public ActionResult Index()
            {
                var db = new Models.db_set.db_context();
                var list = db.Books.AsNoTracking().ToList();
                return View(list);
            }
        }
    }
    

    좋은 웹페이지 즐겨찾기