📄 element.cs
字号:
}
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 + -