public long SaveCreateBaseObject <T>(T businessObject, long userID) where T : class, IBaseObject { object objectID = 0; businessObject.ObjectTypeID = GetObjectTypeID(businessObject.GetType().Name); businessObject.CreatedByID = userID; businessObject.CreatedDate = DateTime.Now; businessObject.ModifiedByID = userID; businessObject.ModifiedDate = DateTime.Now; if (string.IsNullOrEmpty(businessObject.Name)) { businessObject.Name = "none"; } if (string.IsNullOrEmpty(businessObject.Details)) { businessObject.Details = "none"; } var properties = businessObject.GetType().GetProperties().Where( prop => Attribute.IsDefined(prop, typeof(FieldMappingForObjectTableAttribute))); var propertyColumnNames = SqlQueryProvider.GetPropertyNamesForDBColumns(properties); var propertyValues = SqlQueryProvider.GetPropertyValues <T>(properties, businessObject); string query = SqlQueryProvider.InsertBaseObject(propertyColumnNames, propertyValues); using (SqlConnection conn = new SqlConnection(Configuration.DefaultConnectionString)) using (SqlCommand cmd = new SqlCommand(query, conn)) { conn.Open(); objectID = cmd.ExecuteScalar(); conn.Close(); } if (objectID != null) { return((int)(decimal)objectID); } else { return(0); } }
public T SaveCreateBusinessObject <T>(T businessObject, long objectID) where T : class, IBaseObject { var table = GetTableName <T>(); var properties = businessObject.GetType().GetProperties().Where( prop => Attribute.IsDefined(prop, typeof(FieldMappingForMainTableAttribute))); if (properties.Any()) { var propertyColumnNames = SqlQueryProvider.GetPropertyNamesForDBColumns(properties) + ", [ObjectID]"; var propertyValues = SqlQueryProvider.GetPropertyValues <T>(properties, businessObject) + $", {objectID}"; var query = SqlQueryProvider.InsertBusinessObject(table, propertyColumnNames, propertyValues); using (SqlConnection conn = new SqlConnection(Configuration.DefaultConnectionString)) using (SqlCommand cmd = new SqlCommand(query, conn)) { conn.Open(); cmd.ExecuteNonQuery(); conn.Close(); } } else { var propertyColumnNames = "[ObjectID]"; var propertyValues = $"{objectID}"; var query = SqlQueryProvider.InsertBusinessObject(table, propertyColumnNames, propertyValues); using (SqlConnection conn = new SqlConnection(Configuration.DefaultConnectionString)) using (SqlCommand cmd = new SqlCommand(query, conn)) { conn.Open(); cmd.ExecuteNonQuery(); conn.Close(); } } return(SelectGetBusinessObjectAfterSave <T>(businessObject, table, objectID)); }