public T Add(T value) { var cols = value.CurrentColumns(); var pkCol = cols.FirstOrDefault(x => x.IsPrimaryKey && !string.IsNullOrEmpty(x.SeqName)); if (pkCol != null) { var seq = GetSeqValue(pkCol.SeqName); value.Id = seq; } IUnitOfWork localUnitOfWork = null; try { if (!UnitOfWorkFactory.IsActive) { localUnitOfWork = UnitOfWorkFactory.Start(); } var query = value.SqlInsert(); UnitOfWorkFactory.Current.Connection.Execute(query, value); } finally { if (localUnitOfWork != null) { UnitOfWorkFactory.Dispose(); } } return(value); }
private static IEnumerable <T> Select(string where = "", bool distinct = false) { var entity = new T(); var query = entity.SqlSelect(null, distinct); if (!string.IsNullOrEmpty(where)) { query += " where " + where; } IUnitOfWork localUnitOfWork = null; List <T> result; try { if (!UnitOfWorkFactory.IsActive) { localUnitOfWork = UnitOfWorkFactory.Start(); } result = UnitOfWorkFactory.Current.Connection.Query <T>(query).ToList(); } finally { if (localUnitOfWork != null) { UnitOfWorkFactory.Dispose(); } } return(result); }
public int GetSeqValue(string seqName) { var result = 0; if (string.IsNullOrEmpty(seqName)) { return(result); } var query = $" SELECT NEXT VALUE FOR [Department].[dbo].{seqName} as 'Id'"; IUnitOfWork localUnitOfWork = null; try { if (!UnitOfWorkFactory.IsActive) { localUnitOfWork = UnitOfWorkFactory.Start(); } var r = UnitOfWorkFactory.Current.Connection.Query <IdName>(query).FirstOrDefault(); if (r != null) { result = r.Id; } } finally { if (localUnitOfWork != null) { UnitOfWorkFactory.Dispose(); } } return(result); }
public bool Delete(T value) { IUnitOfWork localUnitOfWork = null; try { if (!UnitOfWorkFactory.IsActive) { localUnitOfWork = UnitOfWorkFactory.Start(); } var query = value.SqlDelete(); UnitOfWorkFactory.Current.Connection.Execute(query, value); if (GetItem(value.Id) == null) { return(true); } } finally { if (localUnitOfWork != null) { UnitOfWorkFactory.Dispose(); } } return(false); }
public T Update(T value, List <int> fieldsForUpdate) { IUnitOfWork localUnitOfWork = null; try { if (!UnitOfWorkFactory.IsActive) { localUnitOfWork = UnitOfWorkFactory.Start(); } var query = value.SqlUpdate(fieldsForUpdate); UnitOfWorkFactory.Current.Connection.Execute(query, value); } finally { if (localUnitOfWork != null) { UnitOfWorkFactory.Dispose(); } } return(value); }