internal int Update <T>(T item, ISqlLiteDataObjectCrud <T> crud) where T : class, ISqlLiteDataObject
        {
            lock (Locker)
            {
                int r;
                if (item.Id != 0)
                {
                    Connection = new SqliteConnection("Data Source=" + Path);
                    Connection.Open();
                    using (var command = Connection.CreateCommand())
                    {
                        crud.Update(item, command);
                        r = command.ExecuteNonQuery();
                    }
                    Connection.Close();
                    return(r);
                }

                Connection = new SqliteConnection("Data Source=" + Path);
                Connection.Open();
                using (var command = Connection.CreateCommand())
                {
                    crud.Insert(item, command);
                    r = command.ExecuteNonQuery();
                }
                Connection.Close();
                return(r);
            }
        }