RE: Virtual Entity with no text field
I think it is necessary to have a name field, as the platform expects every entity to have a primary name field (there are exceptions, such as entities used in N:N relationships, but you can't make the virtual entity work this way), which is used in lookups to this entity. As far as I know, you'd need to provide a text field to map to the name field somehow (I'd suggest to a concatenation of the lookup fields, or it could be a string representation of the primary key) even if you never use it in CRM.
If you're using the OData provider, and have control over the OData end, you could generate the text field there, or you could create a custom virtual entity data provider