sqlite> select * from assoc;
bd72360a-d12a-4b30-9c0e-fd251fab59d3|Bob||00000000-0000-0000-0000-000000000000|True
That right there told me exactly what went wrong.
SQLite allows you to put any kind of data in any kind of column. The column Active is declared as boolean, but you've inserted a text string into the column who's value is the word "true".
Technically speaking, the SQLiteDataReader *should* have thrown an error when you called GetBoolean(), because that function is not supposed to try and convert a string value to a boolean value. However, it sees that the column is boolean, and calls the core C function sqlite3_column_int() which is returning 0 because the column is not an int, and I am translating that to false.
To fix the problem, you need to import the data into SQLite and use 1 for true and 0 for false in that column instead of the text values "true" and "false".
Robert