I'm pretty sure that your current map won't allow that. You need a key that doesn't include regions. In fact, I recommend having a RailroadId property and column, and don't use any of GameID, EndRegion or BeginRegion in Railroad's key.
Unfortunately for you, NHibernate is based off Hibernate2, so you can't use property-ref in one-to-many mappings (that's only supported in 3.1+). But you can use a unidirectional many-to-one mapping to accomplish precisely the same thing. The ultimate mapping will be something to this effect:
Code:
<class name="Supremacy.DataAccess.DbObjects.Railroads, DataAccess" table="railroad">
<id name="RailroadId" column="RailroadId" type="integer>
<generator class="native"/>
</id>
<!-- Maybe these are many-to-ones? -->
<property name="BeginRegion" column="beginregion"/>
<property name="EndRegion" column="endregion"/>
<property name="GameID" column="gameid"/>
<bag name="Into" inverse="true" cascade="all">
<key>
<column name="gameid"/>
<column name="beginregion"/>
</key>
<many-to-one class="Supremacy.DataAccess.DbObjects.Railroads, DataAccess">
<column name="gameid"/>
<column name="endregion/>
</many-to-one>
</bag>
</class>
I'm not exactly sure what features NHibernate currently supports, and there are several abbreviations available in recent hibernate release that make this mapping easier to read (property-ref is added all over the place, very handy), but this or something like it should do what you need.