I actually manually created the relation in the LLBL UI. It was more by accident then anything. I started to create the relationship and it wouldn't let me (types didn't match) so I switched the type in the database, refreshed, and created the relationship.
Testing revealed that while this was "technically" correct it wouldn't actually work against the full database so I switched back and refreshed. To my surprise the relationship stayed and even more surprising actually creates SQL that correctly grabs the entities that I desire.
The only problem is somewhere in the core of LLBL it isn't relinking the retrieved entities back to the parent entity due to the string/int comparison issue.
While technically a hack, I'm just looking to layer another hack on top to make the whole thing function smoothly. I need to pass a sizable object graph to a client and multiple methods to retrieve the object graph (through WCF) is not the preferred method.
The relation as it currently is is WorkOrder.PK (int) <- Filestore.ParentID (string).
The way I would like LLBL to imagine it as (aka internally convert to)
WorkOrder.PK (int) <- Filestore.ParentID (int)
The data is stored in that way in the database, it just happens to be stupidly placed in a varchar(25) field instead of an int.
No special relationship code created, and the hackyness above actually makes a prefetch path that creates working SQL, its just the translation from SQL into an Entity that isn't quite 100%.