/// <summary> /// Create a new instance into database. /// </summary> /// <param name="instance">Instance to create.</param> /// <returns>The instance unique identifier.</returns> private static long InsertDatabaseRecord(T instance) { object value; ORMSqlCommand cmd = ORMEntity <T> .SqlDialect.GetInsertCommand(); // Connecto to database ORMEntity <T> .Connect(); // Set command parameters foreach (ORMEntityMember param in cmd.Parameters) { value = param.GetValue(instance); ORMEntity <T> .SetParameter(param, value is null?DBNull.Value : value); } // Execute the SELECT sentence to retrieve the instance properties ORMEntity <T> .ExecuteNonQuery(cmd.SqlCommand); long id = ExecuteScalar(SqlDialect.GetNewIDCommand().SqlCommand); // Set the generated new record unique identifier to the current instance ORMEntity <T> .ORMStructure.PrimaryKey.SetValue(instance, id); // Close the connection to database ORMEntity <T> .Disconnect(); // Created project is added to in-memory table ORMEntity <T> .AddInMemoryTable(id, instance); return(((ORMIdentifiableEntity)instance).ID); }