If you are dealing with Many to Many relationships, you most likely have to use a junction table.
That means having two additional tables with two columns each:
- VendorsContacts with primary Keys :: VendorID, ContactID
- CustomersContacts with primary Keys :: CustomerID, ContactID
The primary keys of those tables needs to be compound, i.e both keys together serve as a single primary key. In SQL Server that is achieved by marking both columns with CTRL and creating your primary key. You'll notice both of them being marked as primary.
EntityFramework won't be creating entity classes for the junction table, you will directly get access to the Contacts of a given Customer/Vendor through yourCustomer.Contacts and similarly yourVendor.Contacts.