Smark.강력한 성능과 유연성을 갖춘 Data Expression

24899 단어 express
Expression 객체는 Smark입니다.Data의 핵심 대상은 Expression이 조건 대상이지만 당신이 상상할 수 없는 기능을 갖추고 있다. 다음은 Expression의 기능을 열거한다.
        public RESULT Avg<RESULT, Entity>(string field) where Entity : Smark.Data.Mappings.DataObject;
        public RESULT Avg<RESULT, Entity>(string field, bool DISTINCT) where Entity : Smark.Data.Mappings.DataObject;
        public RESULT Avg<RESULT, Entity>(string field, IConnectinContext cc) where Entity : Smark.Data.Mappings.DataObject;
        public RESULT Avg<RESULT, Entity>(string field, bool DISTINCT, IConnectinContext cc) where Entity : Smark.Data.Mappings.DataObject;
        public int Count<T>() where T : Smark.Data.Mappings.DataObject;
        public int Count<T>(IConnectinContext cc) where T : Smark.Data.Mappings.DataObject;
        public int Delete<T>() where T : Smark.Data.Mappings.DataObject;
        public int Delete<T>(IConnectinContext cc) where T : Smark.Data.Mappings.DataObject;
        public int Edit<T>(Action<T> handler) where T : Smark.Data.Mappings.DataObject, new();
        public int Edit<T>(params Field[] fields) where T : Smark.Data.Mappings.DataObject, new();
        public int Edit<T>(IConnectinContext cc, Action<T> handler) where T : Smark.Data.Mappings.DataObject, new();
        public int Edit<T>(IConnectinContext cc, params Field[] fields) where T : Smark.Data.Mappings.DataObject, new();
        public IList<T> List<T>() where T : Smark.Data.Mappings.DataObject, new();
        public IList<RESULT> List<T, RESULT>()
            where T : Smark.Data.Mappings.DataObject, new()
            where RESULT : new();
        public IList<RESULT> List<T, RESULT>(params string[] orderby)
            where T : Smark.Data.Mappings.DataObject, new()
            where RESULT : new();
        public IList<T> List<T>(params string[] orderby) where T : Smark.Data.Mappings.DataObject, new();
        public IList<T> List<T>(Region region) where T : Smark.Data.Mappings.DataObject, new();
        public IList<RESULT> List<T, RESULT>(Region region)
            where T : Smark.Data.Mappings.DataObject, new()
            where RESULT : new();
        public IList<RESULT> List<T, RESULT>(IConnectinContext cc, params string[] orderby)
            where T : Smark.Data.Mappings.DataObject, new()
            where RESULT : new();
        public IList<T> List<T>(IConnectinContext cc, params string[] orderby) where T : Smark.Data.Mappings.DataObject, new();
        public IList<RESULT> List<T, RESULT>(IConnectinContext cc, Region region)
            where T : Smark.Data.Mappings.DataObject, new()
            where RESULT : new();
        public IList<T> List<T>(IConnectinContext cc, Region region) where T : Smark.Data.Mappings.DataObject, new();
        public IList<T> List<T>(Region region, params string[] orderby) where T : Smark.Data.Mappings.DataObject, new();
        public IList<RESULT> List<T, RESULT>(Region region, params string[] orderby)
            where T : Smark.Data.Mappings.DataObject, new()
            where RESULT : new();
        public IList<T> List<T>(IConnectinContext cc, Region region, params string[] orderby) where T : Smark.Data.Mappings.DataObject, new();
        public IList<RESULT> List<T, RESULT>(IConnectinContext cc, Region region, params string[] orderby)
            where T : Smark.Data.Mappings.DataObject, new()
            where RESULT : new();
        public T ListFirst<T>() where T : Smark.Data.Mappings.DataObject, new();
        public RESULT ListFirst<T, RESULT>()
            where T : Smark.Data.Mappings.DataObject, new()
            where RESULT : new();
        public RESULT ListFirst<T, RESULT>(IConnectinContext cc)
            where T : Smark.Data.Mappings.DataObject, new()
            where RESULT : new();
        public T ListFirst<T>(IConnectinContext cc) where T : Smark.Data.Mappings.DataObject, new();
        public T ListFirst<T>(params string[] orderby) where T : Smark.Data.Mappings.DataObject, new();
        public RESULT ListFirst<T, RESULT>(params string[] orderby)
            where T : Smark.Data.Mappings.DataObject, new()
            where RESULT : new();
        public T ListFirst<T>(IConnectinContext cc, params string[] orderby) where T : Smark.Data.Mappings.DataObject, new();
        public RESULT ListFirst<T, RESULT>(IConnectinContext cc, params string[] orderby)
            where T : Smark.Data.Mappings.DataObject, new()
            where RESULT : new();
        public RESULT Max<RESULT, Entity>(string field) where Entity : Smark.Data.Mappings.DataObject;
        public RESULT Max<RESULT, Entity>(string field, bool DISTINCT) where Entity : Smark.Data.Mappings.DataObject;
        public RESULT Max<RESULT, Entity>(string field, IConnectinContext cc) where Entity : Smark.Data.Mappings.DataObject;
        public RESULT Max<RESULT, Entity>(string field, bool DISTINCT, IConnectinContext cc) where Entity : Smark.Data.Mappings.DataObject;
        public RESULT Min<RESULT, Entity>(string field) where Entity : Smark.Data.Mappings.DataObject;
        public RESULT Min<RESULT, Entity>(string field, bool DISTINCT) where Entity : Smark.Data.Mappings.DataObject;
        public RESULT Min<RESULT, Entity>(string field, IConnectinContext cc) where Entity : Smark.Data.Mappings.DataObject;
        public RESULT Min<RESULT, Entity>(string field, bool DISTINCT, IConnectinContext cc) where Entity : Smark.Data.Mappings.DataObject;
        public RESULT Sum<RESULT, Entity>(string field) where Entity : Smark.Data.Mappings.DataObject;
        public RESULT Sum<RESULT, Entity>(string field, bool DISTINCT) where Entity : Smark.Data.Mappings.DataObject;
        public RESULT Sum<RESULT, Entity>(string field, IConnectinContext cc) where Entity : Smark.Data.Mappings.DataObject;
        public RESULT Sum<RESULT, Entity>(string field, bool DISTINCT, IConnectinContext cc) where Entity : Smark.Data.Mappings.DataObject;

이상은 Expression이 갖추고 있는 기능으로 데이터 조회, 통계 집계, 수정과 삭제 등의 작업을 완성할 수 있다.Smark를 쓰면Data는 데이터 액세스를 수행할 때 대부분 Expression과 거래하고 있다고 믿습니다.다음은 그것의 각 기능을 상세하게 소개한다.

데이터 조회


우리가 new에 Expression이 나올 때 관련 조작을 할 수 있지만, 이 조작은 전체 테이블에 대한 조건을 가지고 있지 않습니다.
var employees = exp.List<Employees>();

모든 직원을 얻지만, 조회를 실현하는 것은 그리 간단하지 않다. 조건을 붙여 특정한 페이지의 데이터를 얻고, 페이지를 나누는 등일 수도 있다.
                Expression exp = new Expression();
                if (ProductName != null)
                {
                    exp &= Modules.Product.productName.Like(ProductName + "%");
                    UrlParams.Add("productname", ProductName);
                }
                if (PriceFrom != null)
                {
                    exp &= Modules.Product.unitPrice >= PriceFrom;
                    UrlParams.Add("pricefrom", PriceFrom.ToString());
                }
                if (PriceTo != null)
                {
                    exp &= Modules.Product.unitPrice <= PriceTo;
                    UrlParams.Add("priceTo", PriceTo.ToString());
                }
                DataPage.PageSize = 10;
                DataPage.RecordCount = exp.Count<Modules.Product>();
                Records = exp.List<Modules.Product>(new Region(DataPage.PageIndex, DataPage.PageSize),OrderField);

이상은 비교적 자주 사용하는 조회로 상황에 따라 상응하는 조회 조건을 추가하고 관련 조건의 기록수를 통계하여 해당 페이지의 기록수를 얻는다.

데이터 삭제


삭제는 일반적으로 SQL을 실행하거나 구성 요소에서 대상을 삭제하지만 Smark에서 합니다.Data에서 Expression은 적절한 작업을 손쉽게 수행할 수 있습니다.
        Expression exp = new Expression();
        exp.Delete<Employee>();

Employee의 모든 객체를 삭제하면 다음과 같은 조건 기반 삭제가 더 많이 발생합니다.
    (Modules.Employee.city == "gz").Delete<Modules.Employee>();

이렇게 하면 저희가 어느 도시의employee를 삭제할 수 있어요.

데이터 업데이트

    Expression exp = new Expression();
    exp.Edit<Modules.Employee>(o => { o.City = "bbq"; });
    (Modules.Employee.city == "gz").Edit<Modules.Employee>(o => { o.City = "bbq"; });

같은 방식을 바탕으로 데이터 편집을 할 수 있다

Expression은 어떤 조건을 처리합니까?


Expression이 제공하는 조건 조합은 매우 유연하여 다시 불러오기 |와 & 조건을 실제 SQL에 더욱 가깝게 작성할 수 있도록 하는 방식으로 이 연산의 다양성도 잘 활용되었다.
 qual = (Qualification.sellerID == qinfo.SellerID & Qualification.storeID == qinfo.StoreID).ListFirst<Qualification>();
                Expression exp = new Expression();
                if (EmployeeID != null)
                    exp &= Modules.Order.employeeID.At() == EmployeeID;
                if (CustomerID != null)
                    exp &= Modules.Order.customerID.At() == CustomerID;
                if (OrderDateFrom != null)
                    exp &= Modules.Order.orderDate >= OrderDateFrom;
                if (OrderDateTo != null)
                    exp &= Modules.Order.orderDate <= OrderDateTo;
                if (RequiredDateFrom != null)
                    exp &= Modules.Order.requiredDate >= RequiredDateFrom;
                if (RequiredDateTo != null)
                    exp &= Modules.Order.requiredDate <= RequiredDateTo;
   (Modules.Employee.employeeID == new int[] {2,4,5 }).Delete<Modules.Employee>();
   (Modules.Employee.employeeID != new int[] {2,4,5 }).Delete<Modules.Employee>();
   Modules.Order.orderDate["1997-1-1", "1997-2-1"].List<Modules.Order>();
(Modules.Order.employeeID== Modules.Employee.employeeID[Modules.Employee.city==new []{"gz","sz"}]).List<Modules.Order>();

Expression 대상은 매우 유연하지만, 그 역할은 실체 설명 에 세워진 Smark이다.데이터의 실체 묘사도 매우 유연하다. 묘사표를 제외하고 관련 조회도 묘사할 수 있다. 종합 통계는 Expression 대상과 결합하면 대부분의 실제 응용 수요를 만족시킬 수 있다.다음 장에서 실체 대상의 묘사를 설명할 것이다.
Smark.Data는 Apache License 2.0(Apache) 프로토콜을 기반으로 하는 오픈 소스 구성 요소로, 자세한 내용은 4http://www.ikende.com/이해하다.

좋은 웹페이지 즐겨찾기