Что ж, проблема с таблицами соединений состоит в том, что Entity Framework не должен отображать их, если они содержат только FK смежных таблиц, а потому что у вас есть это поле IsPrimary это должно быть представлено на модели.
В конце концов я хочу получить коллекцию объектов PO, один из которых обозначен как Основной
Да, как я уже говорил выше, вам придется физически отобразить таблицу PO_Contact, то есть ваши запросы могут закончиться так:
var contact = db.Contacts.SingleOrDefault(x => x.ContactId == 1);
var ordersForContact = contact.PO_Contacts.PurchaseOrders.ToList();
и это:
var order = db.PurchaseOrders.SingleOrDefault(x => x.POID == 1);
var contactsForOrder = order.PO_Contacts.Contacts.ToList();
Но выяснить, "какой из них первичен"? (и их может быть несколько), вам понадобится другой фильтр.
Это может быть пример запроса:
var primaryOrdersForConactOne = db.Contacts
.Where(c => c.ContactID == 1)
.Where(c => c.PO_Contacts.IsPrimary)
.ToList();
Это должно сработать.
Однако, , если ваш положительный результат может быть только один первичный заказ для любого данного клиента, вы можете установить форму наследования (TPH, TPT) и сделать это поле дискриминатором, так что вы в конечном итоге с отдельные сущности «PrimaryOrder» и «SecondaryOrder», производные от базового класса «PurchaseOrder».