⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 element.cs

📁 smark.data是基于C#开发的轻量级数据访问组件。 提供以下功能封: 1)提供了跨数据库类型操作能力 2)基于程线存储的数据访问上下文对象
💻 CS
📖 第 1 页 / 共 5 页
字号:
        }
        private void BuilderSelectAndGroup()
        {
            StringBuilder select = new StringBuilder();
            StringBuilder group = new StringBuilder();
            int columns = 0;
            bool isgroup = false;
            if (ID != null)
            {
                select.Append("(" + ID.Column + ") as _" + ID.Name);
                group.Append("("+ID.Column+")");
                columns++;
            }
            foreach (Property p in Properties)
            {
                if (select.Length > 1)
                    select.Append(",");
                if (p.Stat != string.Empty)
                {
                    isgroup = true;
                    if (p.Distinct)
                    {
                        select.Append("(" + p.Stat + "( Distinct " + p.Column + ")) as _" + p.Name);
                    }
                    else
                    {
                        select.Append("(" + p.Stat + "(" + p.Column + ")) as _" + p.Name);
                    }
                }
                else
                {
                    select.Append("(" + p.Column + ") as _" + p.Name);
                    if (group.Length > 1)
                        group.Append(",");
                    group.Append("(" + p.Column + ")");
                }
                columns++;
            }
            CodeMemberField selectfield = new CodeMemberField();
            selectfield.Type = TypeReferenceFactory.StringType();
            selectfield.Attributes = MemberAttributes.Static;
            selectfield.Name = "mSelectString";
            selectfield.InitExpression = new CodePrimitiveExpression("Select " +select.ToString() + " from " + Table);
            mEntity.Members.Add(selectfield);
            CodeMemberField groupfield = new CodeMemberField();
            groupfield.Name = "mGroupString";
            groupfield.Attributes = MemberAttributes.Static;
            groupfield.Type = TypeReferenceFactory.StringType();
            mEntity.Members.Add(groupfield);
            if (columns > 1 && isgroup)
            {
                groupfield.InitExpression = new CodePrimitiveExpression(group.ToString());
            }
            else
            {
                groupfield.InitExpression = new CodePrimitiveExpression(null);
            }
        }

        private void BuilderListFirst()
        {
            CodeMemberMethod listfirst = new CodeMemberMethod();
            listfirst.Name = "ListFirst";
            listfirst.ReturnType = new CodeTypeReference(Name);
            listfirst.Parameters.Add(
               new CodeParameterDeclarationExpression(
                   TypeReferenceFactory.IConnectinContext(), "context"));
            listfirst.Parameters.Add(
               new CodeParameterDeclarationExpression(
                    TypeReferenceFactory.WhereBody(), "expression"));
            listfirst.Parameters.Add(
             new CodeParameterDeclarationExpression(
                 TypeReferenceFactory.StringType(), "OrderBy"));
            listfirst.Attributes = MemberAttributes.Public | MemberAttributes.Static;
            mEntity.Members.Add(listfirst);
            listfirst.Statements.Add(
              new CodeMethodReturnStatement(
              new CodeMethodInvokeExpression(
                  new CodeMethodReferenceExpression(
                      new CodeTypeReferenceExpression("EntityBase"), "OnListFirst",
                      new CodeTypeReference(Name)),
                      new CodeArgumentReferenceExpression("context"),
                      new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(Name), "mSelectString"),
                      new CodeArgumentReferenceExpression("expression"),
                       new CodeArgumentReferenceExpression("OrderBy"),
                      new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(Name), "mGroupString"))));


            listfirst = new CodeMemberMethod();
            listfirst.Name = "ListFirst";
            listfirst.ReturnType = new CodeTypeReference(Name);
            listfirst.Parameters.Add(
               new CodeParameterDeclarationExpression(
                   TypeReferenceFactory.IConnectinContext(), "context"));
            listfirst.Parameters.Add(
               new CodeParameterDeclarationExpression(
                    TypeReferenceFactory.WhereBody(), "expression"));
            listfirst.Attributes = MemberAttributes.Public | MemberAttributes.Static;
            mEntity.Members.Add(listfirst);
            listfirst.Statements.Add(
              new CodeMethodReturnStatement(
              new CodeMethodInvokeExpression(
                  new CodeMethodReferenceExpression(
                      new CodeTypeReferenceExpression(Name), "ListFirst"),
                      new CodeArgumentReferenceExpression("context"),
                       new CodeArgumentReferenceExpression("expression"))));


            CodeVariableDeclarationStatement context = new CodeVariableDeclarationStatement(TypeReferenceFactory.IConnectinContext(), "_context");
            CodeAssignStatement setcontext = GetContext();
            CodeTryCatchFinallyStatement trycatch;
            CodeCatchClause _catch;
            #region expression,region,orderby
            listfirst = new CodeMemberMethod();
            listfirst.Name = "ListFirst";
            listfirst.ReturnType = new CodeTypeReference(Name);
            listfirst.Parameters.Add(
               new CodeParameterDeclarationExpression(
                    TypeReferenceFactory.WhereBody(), "expression"));


            listfirst.Parameters.Add(
             new CodeParameterDeclarationExpression(
                 TypeReferenceFactory.StringType(), "OrderBy"));

            mEntity.Members.Add(listfirst);
            listfirst.Statements.Add(context);
            listfirst.Statements.Add(setcontext);
            trycatch = new CodeTryCatchFinallyStatement();
            listfirst.Attributes = MemberAttributes.Public | MemberAttributes.Static;
            listfirst.Statements.Add(trycatch);
            trycatch.TryStatements.Add(
                new CodeMethodReturnStatement(
                new CodeMethodInvokeExpression(
                    new CodeMethodReferenceExpression(
                        new CodeTypeReferenceExpression(Name), "ListFirst"),
                        new CodeVariableReferenceExpression("_context"),
                   
                          new CodeArgumentReferenceExpression("expression"),
                      
                        new CodeArgumentReferenceExpression("OrderBy"))));
            _catch = new CodeCatchClause("e_", new CodeTypeReference(typeof(Exception)));
            _catch.Statements.Add(new CodeThrowExceptionStatement(new CodeVariableReferenceExpression("e_")));
            trycatch.CatchClauses.Add(_catch);
            trycatch.FinallyStatements.Add(
                new CodeMethodInvokeExpression(
                    new CodeMethodReferenceExpression(new CodeVariableReferenceExpression("_context"),
                        "Dispose")));
            #endregion

            #region expression
            listfirst = new CodeMemberMethod();
            listfirst.Name = "ListFirst";
            listfirst.ReturnType = new CodeTypeReference(Name);
            listfirst.Parameters.Add(
               new CodeParameterDeclarationExpression(
                    TypeReferenceFactory.WhereBody(), "expression"));
            mEntity.Members.Add(listfirst);
            listfirst.Statements.Add(context);
            listfirst.Statements.Add(setcontext);
            trycatch = new CodeTryCatchFinallyStatement();
            listfirst.Attributes = MemberAttributes.Public | MemberAttributes.Static;
            listfirst.Statements.Add(trycatch);
            trycatch.TryStatements.Add(
                new CodeMethodReturnStatement(
                new CodeMethodInvokeExpression(
                    new CodeMethodReferenceExpression(
                        new CodeTypeReferenceExpression(Name), "ListFirst"),
                        new CodeVariableReferenceExpression("_context"),
                              new CodeArgumentReferenceExpression("expression"),
                        new CodePrimitiveExpression(null))));
            _catch = new CodeCatchClause("e_", new CodeTypeReference(typeof(Exception)));
            _catch.Statements.Add(new CodeThrowExceptionStatement(new CodeVariableReferenceExpression("e_")));
            trycatch.CatchClauses.Add(_catch);
            trycatch.FinallyStatements.Add(
                new CodeMethodInvokeExpression(
                    new CodeMethodReferenceExpression(new CodeVariableReferenceExpression("_context"),
                        "Dispose")));
            #endregion

        }
        private void BuilderList()
        {
            #region list context,expression,region,orderby
            CodeMemberMethod list = new CodeMemberMethod();
            list.Name = "List";
            list.ReturnType = TypeReferenceFactory.IList_1(Name);
            list.Parameters.Add(
                new CodeParameterDeclarationExpression(
                    TypeReferenceFactory.IConnectinContext(), "context"));
            list.Parameters.Add(
               new CodeParameterDeclarationExpression(
                    TypeReferenceFactory.WhereBody(), "expression"));

            list.Parameters.Add(
              new CodeParameterDeclarationExpression(
                  TypeReferenceFactory.Region(), "region"));
            list.Parameters.Add(
             new CodeParameterDeclarationExpression(
                 TypeReferenceFactory.StringType(), "OrderBy"));

            mEntity.Members.Add(list);
            list.Attributes = MemberAttributes.Public | MemberAttributes.Static;
            list.Statements.Add(
                new CodeMethodReturnStatement(
                new CodeMethodInvokeExpression(
                    new CodeMethodReferenceExpression(
                        new  CodeTypeReferenceExpression("EntityBase"), "OnList",
                        new CodeTypeReference(Name)),
                        new CodeArgumentReferenceExpression("context"),
                        new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(Name), "mSelectString"),
                        new CodeArgumentReferenceExpression("expression"),
                        new CodeArgumentReferenceExpression("region"),
                        new CodeArgumentReferenceExpression("OrderBy"),
                        new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(Name), "mGroupString"))));


            #endregion

            #region list context expression
            list = new CodeMemberMethod();
            list.Name = "List";
            list.ReturnType = TypeReferenceFactory.IList_1(Name);
            list.Parameters.Add(
                new CodeParameterDeclarationExpression(
                    TypeReferenceFactory.IConnectinContext(), "context"));
            list.Parameters.Add(
               new CodeParameterDeclarationExpression(
                    TypeReferenceFactory.WhereBody(), "expression"));

            mEntity.Members.Add(list);
            list.Attributes = MemberAttributes.Public | MemberAttributes.Static;
            list.Statements.Add(
                new CodeMethodReturnStatement(
                new CodeMethodInvokeExpression(
                    new CodeMethodReferenceExpression(
                        new CodeTypeReferenceExpression(Name), "List"),
                        new CodeArgumentReferenceExpression("context"),
                         new CodeArgumentReferenceExpression("expression"),
                        new CodePrimitiveExpression(null),
                        new CodePrimitiveExpression(null))));
            #endregion
            CodeVariableDeclarationStatement context = new CodeVariableDeclarationStatement(TypeReferenceFactory.IConnectinContext(), "_context");
            CodeAssignStatement setcontext = GetContext();
            CodeTryCatchFinallyStatement trycatch;
            CodeCatchClause _catch;
            

            #region expression,region,orderby
            list = new CodeMemberMethod();
            list.Name = "List";
            list.ReturnType = TypeReferenceFactory.IList_1(Name);
            list.Parameters.Add(
               new CodeParameterDeclarationExpression(
                    TypeReferenceFactory.WhereBody(), "expression"));

            list.Parameters.Add(
              new CodeParameterDeclarationExpression(

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -