123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace Ant.ORM
- {
- /// <summary>
- /// 关联表
- /// </summary>
- public class MakeJoinTable
- {
- private static object lockHelper = new object();
- private static volatile MakeJoinTable instance = null;
- public List<JoinOnTableNode> RootList = new List<JoinOnTableNode>();
- private JoinOnTableNode item;
- private int i = 0;
- public MakeJoinTable()
- {
- }
- public static MakeJoinTable Instance
- {
- get
- {
- if (instance == null)
- {
- lock (lockHelper)
- {
- if (instance == null)
- {
- instance = new MakeJoinTable();
- }
- }
- }
- return instance;
- }
- }
- #region IDictionary 成员
- /// <summary>
- /// 左关联查询(左边是主表,右边是关联表)
- /// </summary>
- /// <typeparam name="TM">主表</typeparam>
- /// <typeparam name="TN">次表</typeparam>
- /// <param name="asname">关联表别名</param>
- /// <returns></returns>
- public MakeJoinTable LeftJoin<TM, TN>(string asname)
- {
- item = new JoinOnTableNode();
- item.TableName = typeof(TM).Name;
- item.NTableName = typeof(TN).Name;
- item.NTableAsName = asname;
- item.JoinType = JoinTypes.LeftJoin;
- return this;
- }
- /// <summary>
- /// InnerJoin关联查询(左边是主表,右边是关联表)
- /// </summary>
- /// <typeparam name="TM">主表</typeparam>
- /// <typeparam name="TN">次表</typeparam>
- /// <param name="asname">关联表别名</param>
- /// <returns></returns>
- public MakeJoinTable InnerJoin<TM, TN>(string asname)
- {
- item = new JoinOnTableNode();
- item.TableName = typeof(TM).Name;
- item.NTableName = typeof(TN).Name;
- item.NTableAsName = asname;
- item.JoinType = JoinTypes.Inner;
- return this;
- }
- /// <summary>
- /// 右关联查询(左边是主表,右边是关联表)
- /// </summary>
- /// <typeparam name="TM">主表</typeparam>
- /// <typeparam name="TN">次表</typeparam>
- /// <param name="asname">关联表别名</param>
- /// <returns></returns>
- public MakeJoinTable RihtJoin<TM, TN>(string asname)
- {
- item = new JoinOnTableNode();
- item.TableName = typeof(TM).Name;
- item.NTableName = typeof(TN).Name;
- item.NTableAsName = asname;
- item.JoinType = JoinTypes.RightJoin;
- return this;
- }
- /// <summary>
- /// 关联表条件
- /// </summary>
- /// <param name="mSql">主表关联字段</param>
- /// <param name="nSql">次表关联字段</param>
- /// <returns></returns>
- public MakeJoinTable JoinOn(Enum mSql, Enum nSql)
- {
- item.JoinOn1 = mSql.ToString();
- item.JoinOn2 = nSql.ToString();
- RootList.Add(item);
- return this;
- }
- #endregion
- }
- public class JoinColumn
- {
- private string TableName;
- private int Num;
- }
- }
|