DAL2 does not support Composite Keys.
The best way I have found to work around this limitation is to modify the database table. I use an Auto-increment int 'id' field for the primary key and set a unique constraint on the fields that I desired to use as the composite key.
This will required the .Find() method to be used which prevents caching. If caching is desired it must be done manually. When cache is manually set, it should be manually cleared as well. If you are using the repository technique make sure to clear the cache when the object is updated, or deleted.
"Look to the sky as much as the screen!"