For previous Subsonic projects where I set the tables up directly in the database, when I needed a ManyToMany table for mapping things across, I created that table with one column for each of the related tables and made all of those columns into a composite key. That has, in the past, made Subsonic do the "right" thing (not that I'm assuming that what I've been doing is the "right" way to achieve it).
I was intrigued by the migrations recently when I heard them described, so decided to use them on a new project. The problem I've got is that all of the examples leave out the ManyToMany setup. In and of itself, that wouldn't be a big deal, except that even in the API, I can't see how you'd either created the composite keys like I'm used to or any other way to create ManyToMany tables.
All of the methods for creating tables and primary keys are all about one column and if, for example, you build up the 2-3 columns manually (making them all primary with IsPrimaryKey) and add them to the table, the duplicate primary key exception is thrown.
I know from my early experience with Subsonic that adding another column to *be* the primary key breaks the convention and the functionality for the Table1Table2Map method of gettting nice ManyToMany objects.
I also know the migrations are a relatively new feature, so it's entirely possible that this is just not there yet, but I want to know for sure before moving on to a more hackish solution.