Composite DB keys with Entity Framework 4.0

Steve Ward picture Steve Ward · Dec 18, 2009 · Viewed 13.8k times · Source

The re-design for a large database at our company makes extensive use of composite primary keys on the database.

Forgetting performance impacts, will this cause any difficulties when working with this db in Entity Framework 4.0? The database structure is unlikely to change and I'm not looking for "philosophical" debate but what are the practical impacts?

According to Jeremy Miller, "Composite key make any kind of Object/Relational mapping and persistance in general harder." but he doesn't really say why. Is this relavent to how Entity Framework 4.0 handles keys?

Answer

John Farrell picture John Farrell · Dec 18, 2009

No, EF4 supports composite keys just fine.

The problem is a table with a surrogate key and composite keys. You can only set a single key on each model; that key can have multiple fields, but you can only have one from the designer standpoint. Not sure about manually editing xml or code only mapping.

You can set a field as an Identity and not a key if you need a composite and surrogate key on the same table. The Identity ( Id ) field won't be used by the ObjectContext or ObjectStateTracker but will increment and be queryable just fine though.