Hi
It looks like you're using a single entity object as the query base rather than an EntityCollection. While this shouldn't present a problem (AFAIK) it may present issues if more than one record is found using the query (as you would be trying to load a collection into a single entity).
Couple of things I would check.
Firstly, is there an exception/error being thrown by the second call to load (if you've got any kind of global exception handling it may be 'hiding' the exception)?
Secondly, have you confirmed what the database returns when you run the query on the DB directly (Select * From [communication] WHERE device_id="1966" ) - is it a single record, a number of records, no records? (I know what you're expecting it to return, but it's worth validating that against the DB just in case)
As Mike says, there shouldn't be any difference between query methods but if there is a possibility of a query returning > 1 record I would use a collection rather than a single entity
Hope that helps
Martin