Определение иерархии классов VS (автоматически) сгенерированные навигационные свойства - PullRequest
2 голосов
/ 02 марта 2012

Что должно стимулировать рассмотрение проекта для следующего случая?

Допустим, у вас есть цитаты.

Цитата относится к конкретному контракту.

Я могу определить мои занятия следующим образом

Contract =
  someproperty  : int

Quote:
  contract : Contract

Тем не менее, когда я перемещаюсь, я бы хотел, , даже если он не существует в моей модели , чтобы иметь возможность делать

myContract.quotes

Как правило, эти свойства создаются при использовании платформы Entity или некоторого другого ORM.

Но вопрос отделения определения от навигации существует в полной общности, даже когда используются только классы с чистой памятью.

(Полагаю, что можно было бы сгенерировать транзитивное замыкание навигационного графа из подмножества ссылок, указанных в определении)

Мой вопрос: каков возможный практический подход для автоматического наследования этих навигационных свойств в FSharp? Я просто пользователь, а не разработчик фреймворков, и это очень низкоуровневый материал.

[Очевидно, что вы можете обобщить на более сложные иерархии классов, может быть

  • Цитата поступает от брокера, имеет тип спроса или предложения, имеет уровень и действительна для конкретного контракта.
  • Контракт может быть на определенный срок, скажем, 2013, и относиться к конкретной компании.
  • У компании есть тикер, и т. Д., И т. Д ...]

Ответы [ 2 ]

2 голосов
/ 03 ноября 2013

Может быть, я неправильно понял; но не могли бы вы использовать метод расширения , чтобы добавить возможность навигации таким образом? Вам все еще нужно вызвать функцию, чтобы получить кавычки для конкретного контракта, но существует помощник, который может просто вызвать вашего поставщика данных для отфильтрованного списка цитат для этого контакта?

1 голос
/ 02 марта 2012

гул, интересный вопрос.

Согласно этому сообщению в блоге , вы можете просто использовать инфраструктуру сущностей, чтобы сделать это без поддержки базы данных. Вам придется справиться с настойчивостью самостоятельно.

Или вы могли бы попытаться провести выходные самостоятельно, решая эту проблему с помощью общего решения F #, но я бы сказал, что EF здесь достаточно хорош?

...