Вот мои Простейшие структурыкэширования при загрузке объектов из базы данных в Entity Framework
Customer
CustomerID
FirstName
LastName
...
BrokerID <- Navigation Property created with this FK
Broker
BrokerID
FirstName
LastName
Теперь мой вопрос, если я загружаю несколько клиентов, и я хочу, чтобы увидеть список клиента, и я также должен видеть Имя Брокера, связанное с клиентом, теперь у одного брокера, вероятно, будет много клиентов, поэтому у многопрофильных клиентов, скорее всего, будут повторяющиеся Брокерские идентификаторы.
Я полагаю, что по умолчанию EF вернет новый экземпляр брокера для каждого клиента, и он будет запрашивать брокера нагрузки для каждого брокера, даже если он повторяется.
Есть ли в любом случае я могу сделать EF не загружать брокер, если бы тот же брокер был загружен раньше? Этот тип кэширования (только для небольших sessoin) существует в EF или мне нужно добавить собственную реализацию свойств навигации?
IdentityMap интересен, я не знал об этом, но, я думаю, это даже подвержено проблеме параллелизма, если у двух клиентов есть один и тот же брокер, свойство навигации имеет один экземпляр объекта брокера? загружен в один запрос? –
Я не вижу проблемы параллелизма. IdentityMap обрабатывается для каждого контекста объекта. Контекст объекта обычно не используется. Если один поток запрашивает несколько клиентов, которые используют один брокер, естественно, что брокер представлен одним экземпляром, общим для клиентов. –