I've run into this and unfortunately the answer is to create a meaningless INT key on those tables that you use as your primary/foreign key: http://spsamer.com/2012/05/08/implementing-ects-in-spd-using-stored-procedures/
Each stored procedure needs to provide a unique identifier of type integer. SPD will allow you to have other types of unique identifiers, but you will run into runtime errors if you try to perform any association, create, update, or delete operations. You need these identifiers to avoid issues even if they are completely meaningless to your solution.