При быстром сканировании сообщений об ошибках EF явно не нравится, как вы настраиваете составные ключи, и я думаю, что это, вероятно, подталкивает вас в правильном направлении. Подумайте еще раз о том, что делает ваши первичные ключи уникальными. Один OrderID не уникален, без CompanyID? Является ли ProductID не уникальным без CompanyID? Линия заказа, безусловно, должна быть уникальной без идентификатора компании, поскольку линия заказа должна быть связана только с одним заказом.
Если вам действительно нужен CompanyID для всего этого, что, вероятно, означает, что данная компания предоставляет вам ProductID и OrderID, тогда вы можете пойти в другом направлении и сгенерировать свои собственные первичные ключи, которые не являются внутренними. к данным. Просто установите столбец автоинкремента для вашего первичного ключа, и пусть они будут внутренними OrderID, OrderLineID, ProductID, CompanyID и т. Д. В этот момент OrderLine не понадобится OrderID или CompanyID клиента; ссылка на внешний ключ для Заказа будет его отправной точкой. (И CustomerID никогда не должен быть атрибутом строки заказа; это атрибут заказа, а не строки заказа.)
Составные ключи просто беспорядочные. Попробуйте разработать модель без них и посмотрите, упрощает ли она вещи.