In order to get a collection of the columns associated with a primary key for any of your persistent types you could use the GetIdentityMembers method of our MetadataWorker which returns a collection of the primary keys of the given persistent type.
For your convenience I prepared the following code snipped demonstrating that approach over the [Sales].SpecialOfferProduct table of the AdventureWorks database that you've mentioned:
(EntitiesModel context =
MetaPersistentType type =
context.Metadata.PersistentTypes.FirstOrDefault(t => t.Name ==
var identityMembers = MetadataWorker.GetIdentityMembers(type);
"Identities of "
+ type.Table.Name +
// the identity field
// the identity column
Regarding to your question about the IsJoin property of our MetaTable class - it indicates whether the table is a join table in the database as described in this documentation section
Note that in case you would like to use the OpenAccess LINQ querying capabilities, it will be enough to know the property names of the Identity members. On the other hand, if you need to build custom SQL statements, once you retrieve the column names using the above-mentioned approach, you can use our ADO API
to create, execute and materialize the results of your queries.
I hope this helps. Do not hesitate to contact us back if you need any further assistance.
the Telerik team
Q3'12 SP1 of OpenAccess ORM packs Multi-Table Entities mapping support. Check it out.