나는 이 저장소에 데이터 액세스 주제의 예를 만들었습니다. 엔터티 프레임워크, 데이터 우선, 코드 우선, Orm, 데이터베이스 생성과 같은 주제에 대한 예제와 프로젝트가 있습니다.
관계형 데이터베이스와 객체지향 프로그래밍(OOP) 사이의 다리 역할을 하는 도구입니다. 이 브리지는 객체 모델을 사용하여 관계형 데이터베이스의 정보를 관리하는 구조입니다. 간단히 말해서, 개체를 데이터베이스에 연결하고 데이터를 교환하는 Microsoft가 개발한 프레임워크입니다.
Entity 프레임워크와 함께 LINQ(Language Integrated Query) 쿼리를 사용하면 개체에 대한 강력한 쿼리가 가능해집니다. Entity 프레임워크에서 제공하는 서비스는 주로 변경 추적, ID 확인 및 쿼리 변환입니다. Entity 프레임워크의 주요 목적은 애플리케이션 개발자가 데이터 작업에 너무 바쁘지 않고 애플리케이션 측면에 집중할 수 있도록 하는 것입니다. 아주 간단한 예로, 우리 개발자는 기존 ADO.NET 애플리케이션에서 연결을 열고 닫는 일을 전적으로 담당합니다. 그러나 엔터티 프레임워크를 사용하면 그러한 작업을 방해하지 않습니다. 쿼리를 준비하고 엔터티 프레임워크를 통해 데이터베이스로 보냅니다.
Entity Framework는 이를 위해 3가지 프로젝트 개발 방법을 사용합니다.
Model First = 이 방법을 사용하면 Visual Studio에 빈 모델 파일(.edmx)을 추가하여 이 모델에 데이터베이스를 설계할 수 있습니다. 컴파일 단계에서 제공된 스크립트 파일은 데이터베이스를 생성합니다.
Database First = 이 방향에서는 이전에 생성된 데이터베이스를 프로젝트에 모델로 연결하여 Entity Framework에서 필요한 클래스를 생성합니다.
이 폴더에서는 먼저 데이터베이스의 예를 보여주었습니다. GitHub 페이지.
Code First = 이 방법은 Visual Studio 환경에서 클래스 생성을 시작하여 수행하는 방법입니다. 우리 데이터베이스는 이러한 클래스에서 파생됩니다. 여기서 개발자는 클래스를 생성하는 동안 속성 덕분에 매핑 작업을 수행할 수 있습니다. 그런데 매핑 프로세스는 테이블에서 제약 조건을 정의하는 이벤트입니다. 속성 외에도 다양한 방법으로 이러한 작업을 수행할 수 있습니다. 예를 들어 Fluent Api 또는 Fluent Validation과 같은 도구는 매핑 작업에 널리 사용됩니다.
Entity Framework 라이브러리를 사용하면 데이터베이스의 테이블에 쿼리를 수행하여 데이터를 필터링할 수 있습니다. T-SQL에서 수행할 수 있는 거의 모든 쿼리는 Entity Framework를 통해 수행할 수 있습니다.
여기서는 기본적인 선택 작업을 보여 주었습니다. GitHub 페이지.
Entity Framework 라이브러리를 통해 T-SQL 쿼리 및 보고의 통합 기능을 사용할 수도 있습니다.
여기서는 기본 집계 함수를 보여 주었습니다. GitHub 페이지.
Code First 구조에서 프로그래밍 언어의 "클래스" 구조는 데이터베이스의 "테이블" 구조에 해당하고, "속성" 구조는 데이터베이스의 "열" 구조에 해당합니다. 데이터베이스 구조에 유효성 검사를 적용할 수 있으며 열에 특정 조건이나 제한 사항을 적용할 수 있습니다. 가장 중요한 점은 프로젝트에서 모델의 자동 제어를 느끼고 원하는 대로 전체 제어를 통해 사용할 수 있다는 것입니다.
여기에서 이 주제에 대한 나의 예를 볼 수 있습니다. GitHub 페이지.
여기에서 사용할 수 있는 vir 데이터베이스를 만들었습니다.
여기에서 확인하실 수 있습니다. GitHub 페이지.
이는 계층화된 아키텍처 프로젝트를 더욱 체계적으로 만들고, 코드의 가독성을 높이고, 팀워크를 높이고, 오류 관리를 더 쉽게 만드는 구조입니다. 실제로 이러한 구조를 통해 우리는 프로젝트 작성을 표준으로 삼았습니다. 이 구조는 3개의 주요 레이어로 구성되어 있어 오늘날 Multi-Layer Architecture 구조라고 할 수 있습니다. 그러나 실제로는 3개의 주요 레이어에 있습니다. 이러한 레이어는 다음과 같습니다.
-- 데이터 계층 -- 비즈니스 계층 -- 프리젠테이션 계층
여기서는 내 데이터베이스.GitHub 페이지에 해당하는 엔터티를 만들었습니다.
여기서는 인프라 계층인 GitHub 페이지를 만들었습니다.
여기에서 UI를 만들었습니다.GitHub 페이지.
Dapper는 많은 데이터베이스를 지원하는 Stackoverflow에서 개발한 마이크로 ORM 도구입니다. orm 도구는 자체적으로 많은 작업을 수행하기 때문에 실행 속도가 약간 느려집니다. 특히 교통량이 많은 항구에서는 선호되지 않습니다. 이러한 경우 Dapper가 선호될 수 있습니다. 단일 "dll"입니다. 그렇다면 매핑을 위한 인터페이스는 무엇일까요? 또한 구성 파일이 필요하지 않습니다. 한마디로 간단하고 빠릅니다. Github에 오픈소스로 공개되었으며 계속해서 개발되고 있습니다.
--Dapper의 가장 중요한 특징은 매우 좋은 성능입니다. 대부분의 경우 이러한 장점 때문에 선호됩니다.
--쉽게 쿼리를 실행하고 반환된 결과를 개체에 쉽게 바인딩할 수 있습니다.
--가장 중요한 단점은 쿼리가 인라인으로 작성되기 때문에 실수가 발생하기 쉽다는 것입니다. 이 점에 주의를 기울여야 합니다. 더 나쁜 것은 이러한 오류가 빌드 타임이 아닌 런타임에 발생한다는 것입니다.
--Dapper에서는 대부분의 작업을 수행합니다. 개발자는 데이터베이스, 쿼리, 프로그램 측 자산 및 개체 상태를 수행해야 합니다. 이는 대규모 프로젝트의 개발 단계에서 개발 및 유지 관리 비용을 크게 증가시킵니다.
이 저장소에서는 2가지 방법을 사용해 보았습니다. 한 저장소에서는 Sql의 프로시저를 작업했고, 다른 저장소에서는 프로그램에 직접 쿼리를 작성하여 작업했습니다.
-- 먼저 SQL로 데이터베이스를 생성했습니다.
-- 이후에는 프로그램에서 사용할 방법에 적합한 절차를 만들었습니다. 여기에서 볼 수 있습니다. GitHub 페이지
--내 프로그램에서는 절차에 사용할 레이어와 자산, 저장소도 만들었습니다. 여기서 중요한 것은 내가 사용할 절차와 매개변수를 올바르게 제공하는 것입니다. 그렇지 않으면 많은 오류가 발생합니다. 여기에서 볼 수 있습니다. GitHub 페이지
-- "connection"을 사용하여 데이터베이스와의 연결을 생성했습니다. 여기에서 볼 수 있습니다. GitHub 페이지
-- 최신 사용자 인터페이스를 만들고 원하는 작업을 수행했습니다. 여기에서 볼 수 있습니다. GitHub 페이지
여기에서는 SQL에서 직접 원하는 작업을 실행하는 쿼리를 작성했습니다. 여기에 쿼리를 작성하는 동안 매우 주의가 필요합니다. 오류로 인해 많은 시간이 낭비될 수 있습니다. 매개변수의 경우 쿼리의 매개변수 일치 값이 정확해야 합니다. 하지만 저에게는 Dapper에서 예외가 꽤 자명합니다. 쉽게 결함을 찾는 것이 정말 도움이 됩니다.
여기에서 볼 수 있습니다. GitHub 페이지
여기서는 사용자 인터페이스에 내 작업을 표시했습니다.
여기에서 볼 수 있습니다. GitHub 페이지