123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using Ant.Data;
- using System.Data;
- using System.Transactions;
- using System.Reflection;
- using System.Text.RegularExpressions;
- using System.Configuration;
- using Ant.Frame;
- using Ant.ORM;
- namespace Ant.ORM
- {
- /// <summary>
- ///多表操作数据持久类
- /// <remarks>要求配置Ant.Data配置节</remarks>
- /// </summary>
- public class PersistMore
- {
- private static string logfile = ConfigurationManager.AppSettings["DataDynamicsARLic"].ToLower();
- public static string ConnectionType = ConfigurationManager.AppSettings["ConnectionType"];//连接方式
- //private DataAccess DAO = DataAccessFactory.CreateDataAccess(Config.DefaultDatabaseProperty);
- #region 将实体转成SQL语句
- #region 插入INTSET方法
- /// <summary>
- /// 保存实体对象
- /// </summary>
- /// <param name="entity">实体对象</param>
- /// <returns></returns>
- public bool SaveEntity(Dictionary<string, EntyTypeData> listtype)
- {
- DataAccess db = null;
- using (TransactionScope soce = new TransactionScope())
- {
- try
- {
- QueryCommandBuilders querycommd = new QueryCommandBuilders();
- foreach (EntyTypeData mod in listtype.Values)
- {
- MetaData md = new MetaData();
- md.FiledMeta= MetaDataManager.GetMetaData(mod.EntityValue.GetType());//获取实体的元数据
- //if ((Object.Equals(db, null)) || (Object.Equals(db, DBNull.Value)))
- //{
- // db = DataAccessFactory.CreateDataConnection(md.ModuleName);//创建数据库连接
- //}
- QueryCommandBuilder qcBuilder = QueryCommandBuilder.Instance(db.DatabaseType);//创建不同的SQL语句
- qcBuilder.Md = md;//所有实体属性
- qcBuilder.PersistType = MetaDataManager.GetEntityType(mod.EntityValue);//操作类型
- qcBuilder.QueryComm = qcBuilder.GetQueryCommand();
- querycommd.Add(qcBuilder);
- }
- int num = 0;
- foreach (QueryCommandBuilder querymod in querycommd)
- {
- num = num + db.ExecuteNonQuery(querymod.QueryComm.CommandText, querymod.QueryComm.Parameters);
- }
- soce.Complete();
- return num > 0;
- }
- catch (Exception ex)
- {
-
- return false;
- }
- }
- }
- /// <summary>
- /// 可以实现不在同一个数据库的事务提交(异步)
- /// </summary>
- /// <param name="listtype"></param>
- /// <returns></returns>
- public bool SubmitChanges(Dictionary<string, EntyTypeData> listtype)
- {
- DataAccess db = null;
- using (TransactionScope soce = new TransactionScope())
- {
- try
- {
- QueryCommandBuilders querycommd = new QueryCommandBuilders();
- foreach (EntyTypeData mod in listtype.Values)
- {
- MetaData md = new MetaData();
- md.FiledMeta = MetaDataManager.GetMetaData(mod.EntityValue.GetType());//获取实体的元数据
- //if ((Object.Equals(db, null)) || (Object.Equals(db, DBNull.Value)))
- //{
- // db = DataAccessFactory.CreateDataConnection(md.ModuleName);//创建数据库连接
- //}
- QueryCommandBuilder qcBuilder = QueryCommandBuilder.Instance(db.DatabaseType);//创建不同的SQL语句
- qcBuilder.Md = md;//所有实体属性
- qcBuilder.PersistType = MetaDataManager.GetEntityType(mod.EntityValue);
- qcBuilder.QueryComm = qcBuilder.GetQueryCommand();
- querycommd.Add(qcBuilder);
- }
- int num = 0;
- foreach (QueryCommandBuilder querymod in querycommd)
- {
- num = num + db.ExecuteNonQuery(querymod.QueryComm.CommandText, querymod.QueryComm.Parameters);
- }
- soce.Complete();
- return num > 0;
- }
- catch (Exception ex)
- {
-
- return false;
- }
- }
- }
- #endregion
- #region 删除DELETE方法
- public bool DeleteEntity(Dictionary<string, EntyTypeData> listtype)
- {
- DataAccess db = null;
- try
- {
- QueryCommandBuilders querycommd = new QueryCommandBuilders();
- foreach (EntyTypeData entity in listtype.Values)
- {
- MetaData md = new MetaData();
- md.FiledMeta= MetaDataManager.GetMetaData(entity.GetType());
- //if ((Object.Equals(db, null)) || (Object.Equals(db, DBNull.Value)))
- //{
- // db = DataAccessFactory.CreateDataConnection(md.ModuleName);//创建数据库连接
- //}
- QueryCommandBuilder qcBuilder = QueryCommandBuilder.Instance(db.DatabaseType);//创建不同的SQL语句
- qcBuilder.Md = md;//所有实体属性
- qcBuilder.EntityType = md.FiledMeta.EntityType;
- qcBuilder.PersistType = EntityPersistType.Delete;
- //qcBuilder.Fields = MetaDataManager.GetEntityFields(entity);
- qcBuilder.QueryComm = qcBuilder.GetQueryCommand();
- querycommd.Add(qcBuilder);
- }
- int num = 0;
- foreach (QueryCommandBuilder querymod in querycommd)
- {
- num = num + db.ExecuteNonQuery(querymod.QueryComm.CommandText, querymod.QueryComm.Parameters);
- }
- return num > 0;
- }
- catch (Exception ex)
- {
-
- return false;
- }
- finally
- {
- db.Close();
- db = null;
- }
- }
- #endregion
- #endregion
-
- }
- }
|