提交 314044c2 编写于 作者: S szjay

no commit message

上级 247bf6fb
......@@ -136,8 +136,7 @@ namespace Framework.DomainBase
throw new ServiceException("{0}未定义SQL", entityType.Name);
}
TEntity entity = new TEntity();
string sql = (string)fi.GetValue(entity);
string sql = (string)fi.GetValue(null);
_SqlDict.Add(entityType.FullName, sql);
return sql;
}
......
......@@ -24,6 +24,12 @@ namespace Infrastructure.Utilities
{
public static string GetTableName(Type type)
{
FieldInfo fi = ReflectHelper.GetField(type, "TableName");
if (fi != null)
{
return fi.GetValue(null).ToString();
}
string tableName = type.Name;
return tableName;
}
......
......@@ -22,7 +22,8 @@ namespace Infrastructure.Utilities
//有连接池,自动管理事务。
public class SqlServerDao : IDisposable
{
private const DataSourceSetting.DbTypes dbType = DataSourceSetting.DbTypes.SqlServer;
private SqlConnection conn = null;
private SqlTransaction tran = null;
public SqlServerDao(DataSourceSetting setting)
{
......@@ -48,24 +49,8 @@ namespace Infrastructure.Utilities
private set;
}
private Dictionary<Guid, SqlConnection> connPool = new Dictionary<Guid, SqlConnection>();
private Dictionary<Guid, SqlTransaction> transPool = new Dictionary<Guid, SqlTransaction>();
private SqlConnection GetConnection(bool autoNewConnection = true)
{
if (!connPool.ContainsKey(Setting.Id))
{
if (autoNewConnection)
{
connPool.Add(Setting.Id, new SqlConnection(Setting.ConnectionString));
}
else
{
throw new Exception("未发现SqlConnection");
}
}
SqlConnection conn = connPool[Setting.Id];
if (conn == null)
{
conn = new SqlConnection(Setting.ConnectionString);
......@@ -79,63 +64,25 @@ namespace Infrastructure.Utilities
return conn;
}
public bool BeginTransaction()
public void BeginTransaction()
{
if (transPool.ContainsKey(Setting.Id))
{
return true;
}
if (!transPool.ContainsKey(Setting.Id))
{
SqlConnection conn = connPool[Setting.Id];
SqlTransaction trans = conn.BeginTransaction();
transPool.Add(Setting.Id, trans);
}
return true;
tran = conn.BeginTransaction();
}
public bool CommitTransaction()
public void CommitTransaction()
{
if (!connPool.ContainsKey(Setting.Id))
{
throw new Exception("未发现连接");
}
if (!transPool.ContainsKey(Setting.Id))
if (tran != null)
{
throw new Exception("未发现事务");
tran.Commit();
}
SqlTransaction trans = transPool[Setting.Id];
trans.Commit();
trans.Dispose();
transPool.Remove(Setting.Id);
return true;
}
public bool RollbackTransaction()
public void RollbackTransaction()
{
if (!connPool.ContainsKey(Setting.Id))
if (tran != null)
{
throw new Exception("未发现连接");
tran.Rollback();
}
if (!transPool.ContainsKey(Setting.Id))
{
throw new Exception("未发现事务");
}
SqlTransaction trans = transPool[Setting.Id];
trans.Rollback();
trans.Dispose();
transPool.Remove(Setting.Id);
return true;
}
public List<T> Select<T>() where T : new()
......@@ -209,21 +156,21 @@ namespace Infrastructure.Utilities
public int Insert<T>(T entity)
{
string sql = DbUtil.GenerateInsertSql(dbType, typeof(T), entity);
string sql = DbUtil.GenerateInsertSql(Setting.DbType, typeof(T), entity);
int cnt = Execut(sql);
return cnt;
}
public int Update<T>(T entity)
{
string sql = DbUtil.GenerateUpdateSql(dbType, typeof(T), entity);
string sql = DbUtil.GenerateUpdateSql(Setting.DbType, typeof(T), entity);
int cnt = Execut(sql);
return cnt;
}
public int Delete<T>(object id)
{
string sql = DbUtil.GenerateDeleteSql(dbType, typeof(T), id);
string sql = DbUtil.GenerateDeleteSql(Setting.DbType, typeof(T), id);
int cnt = Execut(sql);
return cnt;
}
......@@ -235,8 +182,7 @@ namespace Infrastructure.Utilities
SqlConnection conn = GetConnection();
SqlCommand cmd = null;
SqlTransaction tran;
if (transPool.TryGetValue(Setting.Id, out tran))
if (tran != null)
{
cmd = new SqlCommand(sql, conn, tran);
}
......@@ -245,7 +191,6 @@ namespace Infrastructure.Utilities
cmd = new SqlCommand(sql, conn);
}
int cnt = cmd.ExecuteNonQuery();
return cnt;
}
......@@ -266,9 +211,9 @@ namespace Infrastructure.Utilities
cmd.CommandText = procName;
cmd.Parameters.AddRange(sqlParameters.ToArray());
if (transPool.ContainsKey(Setting.Id))
if (tran != null)
{
cmd.Transaction = transPool[Setting.Id];
cmd.Transaction = tran;
}
int cnt = cmd.ExecuteNonQuery();
......@@ -312,23 +257,15 @@ namespace Infrastructure.Utilities
public void Dispose()
{
foreach (KeyValuePair<Guid, SqlTransaction> kvp in transPool)
if (tran != null)
{
if (kvp.Value != null)
{
kvp.Value.Rollback(); //事务不提交则自动回滚。
}
tran.Dispose();
}
transPool.Clear();
foreach (KeyValuePair<Guid, SqlConnection> kvp in connPool)
if (conn != null)
{
if (kvp.Value != null)
{
kvp.Value.Dispose(); //释放连接。
}
conn.Dispose();
}
connPool.Clear();
}
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册