Спасибо, Алекс, я попробовал это. Это работает, как вы сказали, но, очевидно, не работает с производным типом сущности. Тип сущности заказа - это абстрактный базовый класс, у которого есть производный класс Sale.
Order o1 = ctx.Orders.First(o => o.Customer.ID == 1);
Sale s1 = ctx.GetSaleByCustomerID_FunctionImport(2).First();
Customer c = ctx.Customers.First(c => c.ID == 1);
Customer c2 = ctx.Customers.First(c => c.ID == 2);
//At this point o.Customer == c but s1.Customer is still null
И я не могу установить тип возвращаемого значения функции импорта как Order, потому что он абстрактный и не разрешен в качестве типа возвращаемого значения.
Что мне здесь не хватает?
Обновление:
Я обнаружил, что есть разница между o1 и s1 до загрузки клиентов
o1.CustomerReference.IsLoaded is False
o1.CustomerReference.EntityKey is ID = 2
s1.CustomerReference.IsLoaded is False
s1.CustomerReference.EntityKey имеет значение null
Но вызов s1.CustomerReference.Load () правильно загрузит данные клиента.
Я дважды проверил мой импорт функции GetSaleByCustomerID (просто «SELECT * FROM Customers WHERE ID = 2»), он возвращает поле CustomerID, требуемое ссылкой.