FreeSql 새로운 기능 소개: 탐욕 로드 방법 5가지

4392 단어 asp.netc#
전언
FreeSql은 6개월의 개발과 친구들의 업무 실천을 통해 끊임없이 개선하고 혁신했다. 현재 1500개 정도의 단원 테스트 방법을 가지고 있으며 각 방법마다 다른 테스트 면을 덮고 있다.
오늘 FreeSql의 다양한 탐욕이 담긴 포즈를 소개해 드리겠습니다.이 절의 내용에 대응하는 것은 [시간 지연 로드]도 있다. 탐욕 로드와 그가 함께 소개해야 할 것은 프로젝트를 개발하는 과정에서 반드시 두 가지를 함께 관리해야 고품질의 프로그램을 쓸 수 있다.시간 지연 로드에 관해서는 나중에 시간이 나면 따로 작성합니다.
FreeSql은 강력한 NETstandard 라이브러리로 대상 관계 매핑 프로그램(O/RM)에 사용되며 개발자가 사용할 수 있도록 한다.NETstandard 객체는 데이터베이스를 처리하기 때문에 대부분의 데이터 액세스 코드를 자주 작성할 필요가 없습니다.
4
  • [√]는 CodeFirst 마이그레이션을 지원합니다

  • 4
  • [√]는 DbFirst가 데이터베이스에서 실체 클래스를 가져오는 것을 지원하고 세 가지 템플릿 생성기를 지원한다

  • 4
  • [√]ExpressionTree의 고성능으로 데이터를 읽습니다

  • 4
  • [√]는 깊이 있는 유형 매핑을 지원한다. 예를 들어 pgsql의 수조 유형은 창의적인 제작이라고 할 수 있다

  • 4
  • [√]는 풍부한 표현식 함수를 지원한다

  • 4
  • [√]는 내비게이션 속성 조회를 지원하고 시간 지연 불러오기를 지원한다

  • 4
  • [√]는 동기화/비동기 데이터베이스 조작 방법을 지원하고 풍부하고 다채로운 체인식 조회 방법을 지원한다

  • 4
  • [√]는 읽기와 쓰기의 분리, 표의 분리, 임대인의 디자인을 지원한다

  • 4
  • [√]는 다양한 데이터베이스, MySql/SqlServer/PostgreSQL/Oracle/Sqlite를 지원합니다

  • 탐욕 방법 1: Dto 매핑 쿼리
    Select().Limit(10).ToList(a => new TestDto { id = a.Id, name = a.Title });
    Select().Limit(10).ToList(a => new TestDto());
    Select().Limit(10).ToList(a => new TestDto { });
    Select().Limit(10).ToList(a => new TestDto() { });
    Select().Limit(10).ToList();

    이 맵은 단일 테이블/다중 테이블을 지원합니다.
    규칙 찾기, 속성 이름 찾기, 내부 객체 순환같은 필드가 나올 때까지 메인 테이블을 우선적으로 찾습니다.
    예:
    A, B, C에는 id가 있고 Dto {id, a1, a2, b1, b2}, A.id가 매핑됩니다.id = C.id 매핑을 지정할 수도 있습니다.
    dto에서 내비게이션 속성을 직접 비추기도 합니다.
    맞아요. 어떤 대상을 비추면 탐욕스럽게 불러올 수 있어요. 이 기능은 데이터베이스 조회 전에 비추는 것이지 모든 데이터를 찾아서 재구성하는 것이 아닙니다.
    탐욕 방법 2: 탐색 속성 ManyToOne/OneToOne
    ManyToOne/OneToOne 내비게이션 속성은 ToList()를 통해 불러옵니다. 이 방법에는 인자가 있습니다:includeNestedMembers.
    매개변수 설명:
    false: 2단계 Join의 데이터를 되돌려줍니다.
    true: 모든 깊이 Join의 내비게이션 데이터를 되돌려줍니다.
    질의에 a.Parent가 이미 사용된 경우Parent 유사 표현식은 LeftJoin 등의 작업 없이 사용할 수 있습니다.
    예:
    class Tag {
        [Column(IsIdentity = true)]
        public int Id { get; set; }
        public string Name { get; set; }
    
        public int? Parent_id { get; set; }
        public virtual Tag Parent { get; set; }
    }
    
    Select().Where(a => a.Parent.Name == "1").ToList();
    //   ,       Join,            LeftJoin

    탐색 속성을 사용하지 않고 다시 로드하려면 Include 메서드를 사용합니다.(이해하기 어려우면 건너뛸 수 있고, 사용 중에만 체득할 수 있을 수도 있다)
    Select().Include(a => a.Parent).ToList();

    탐욕 방법 3: 탐색 속성 ManyToMany
    IncludeMany는 집합의 내비게이션 속성을 탐욕스럽게 불러옵니다. 사실은 두 번의 조회로 나뉘어 ToList 후에 데이터를 다시 설치했습니다.
    class Song {
        [Column(IsIdentity = true)]
        public int Id { get; set; }
        public string Title { get; set; }
    
        public virtual ICollection Tags { get; set; }
    }
    class Song_tag {
        public int Song_id { get; set; }
        public virtual Song Song { get; set; }
    
        public int Tag_id { get; set; }
        public virtual Tag Tag { get; set; }
    }
    
    Select().IncludeMany(a => a.Songs).ToList();
    //   ManyToMany        

    IncludeMany에는 두 번째 질의에 앞서 손질 작업을 수행할 수 있는 두 번째 매개변수가 있습니다.
    Select().IncludeMany(a => a.Songs, 
        then => then.Where(song => song.User == "admin")).ToList();

    그리고 사실then에서 아래로 Include/Include Many를 계속 진행할 수 있습니다.네가 좋아하기만 한다면 100층으로 내려가도 문제없다.
    탐욕 방법 4: 탐색 속성 OneTomany
    대체로 ManyToMany 사용법과 같지만 중간 테이블을 통해 데이터를 조회하지 않습니다.
    탐욕 방법 5: 변종 속성 OneTomany
    변이된 IncludeMany는 내비게이션 속성이 아니더라도 탐욕스럽게 불러올 수 있습니다.일부 오래된 프로젝트에 적합하고 내비게이션 속성 설정이 불규칙적이며 한 쌍의 탐욕스럽게 불러올 수도 있다.
    이해하기 편리하도록 나는 다음 두 가지 종류를 만들었는데 그들은 내비게이션 관계를 설정하지 않았다.왜 설정하지 않았냐고 물어볼지도 몰라요.내가 이렇게 하는 것은 직관적으로 이해하기 위해서, 이렇게 하는 것은 직관적으로 이해하기 위해서, 이렇게 하는 것은 직관적으로 이해하기 위해서!!
    class Order {
        public Guid id { get; set; }
        public string xxx { get; set; }
    
        public List Details { get; set; }
    }
    class OrderDetail{
        public Guid id { get; set; }
        public string detailTestField { get; set; }
    
        public Guid OrderId { get; set; }
    }
    
    Select().IncludeMany(a => a.Details.Where(b => b.OrderId == a.Id)).ToList();

    OK, 이렇게 order를 조회할 때details도 조회해 옵니다.
    완결
    우리는 then에서 limit(5) 기능을 실현하는 것을 고려했다. 장면은 각 하위 기록의 앞의 5개만 조회하고 돌아오는 것이다.
    소스 주소:https://github.com/2881099/FreeSql
    항상 응원해주신 여러분 감사합니다!

    좋은 웹페이지 즐겨찾기