2010-05-27 5 views
1

Это немного странно, но я только что увидел что-то в Twitter, которое меня озадачило, и мне интересно узнать больше.«Работа с неопределенностью» - Entity Framework CodeOnly

Rob Conery твит. Несколько часов назад: Название класса дня: «Maybe<T>». Метод дня: «ToMaybe<T>()». Затем он продолжил предлагать купон Tekpub всем, кто мог догадаться, откуда он. Он связался с еще одним твитом, у которого была подсказка, и из этого я выяснил, что это был только код Entity Framework, но, пытаясь определить использование, кто-то еще ответил, на что ответил Роб ... EF CodeOnly - работа с неопределенностью .. ..

Так что мой вопрос сводится к тому, что именно он имеет в виду неопределенность и как это вписывается в Entity Framework Code-Only?

ответ

1

Maybe<T> является одной из типичных монадов, см., Например, this Wikipedia example. Монады широко используются в функциональном программировании: вы определенно знаете IEnumerable<T>, что также является монадой. LINQ itelf иногда описывается как «языковые интегрированные монады». Еще несколько ссылок:

Наличие Maybe<T> показывает, что качество кода в Entity Framework определенно не плохо: они используют хорошо Известная концепция там, которая есть described many many times (я подозреваю, что там нет ToMaybe<T>() - там должно быть ToMaybe<T>(T value) и Nothing, так что это просто ошибка Роба).

+0

Спасибо кучам Алекс –

0

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

Я очень сомневаюсь, что он каким-либо образом отражает качество кода Entity Framework.

+0

Привет, Роберт благодарен за ответ. Я не был (что означает :), подразумевая что-либо о качестве кода EF. На самом деле, я играл с Code-Only только в последних EF4 CTP за последние пару недель, и мне это очень нравится. Его просто концепция, что меня интересует, можете ли вы подробнее рассказать о своем умозрительном ответе? –

+0

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

+0

Извините, мне не хватает вашей точки. Можете ли вы привести пример? –