F # и Azure TableServiceContext - PullRequest
       0

F # и Azure TableServiceContext

2 голосов
/ 08 августа 2010

Я просто работаю с F # и Azure и расстался с TableServiceContext.Я конвертировал этот пост в реализацию F #, которая работала хорошо, пока не достигла точки, на которой вы фактически запрашиваете данные.В C # код

public IEnumerable<ContactDataModel> Select()
{
    var results = from c in _ServiceContext.ContactTable
                  select c;

    var query = results.AsTableServiceQuery<ContactDataModel>();
    var queryResults = query.Execute();

    return queryResults;
}

, где результатом является IQueryable, а AsTableServiceQuery выглядит как метод расширения.

Кто-нибудь знает, как выполнять эти типы запросов к хранилищу Azure с использованием TableServiceContext?

Я бы подумал, что-то вроде

seq { for c in _ServiceContext.ContactTable do yield c }

или даже с блоком питания

query <@ seq { for c in _ServiceContext.ContactTable do yield c } @>

будет хорошей отправной точкой, но я понятия не имею, гдеидти отсюда.Я полагаю, что в худшем случае оставить это как код C #, а затем вызвать его из F #, но хотел бы знать о любых альтернативах.

Приветствия, Дилан

Ответы [ 2 ]

2 голосов
/ 08 августа 2010

Используйте query <@ seq { ... } @> и приведите результат к IQueryable (это неудачное ограничение поддержки запросов в PowerPack).Остальное должно быть таким же, как C #:

let results = 
  query <@ seq { for c in _ServiceContext.ContactTable do yield c } @> 
    :?> IQueryable<DataContactModel>
let query = results.AsTableServiceQuery()
query.Execute()

(я не пробовал)

0 голосов
/ 08 августа 2010

На основании

http://blogs.msdn.com/b/dsyme/archive/2009/10/23/a-quick-refresh-on-query-support-in-the-f-power-pack.aspx

Я думаю, вы на правильном пути. Возможно, вам придется вызывать метод расширения «явно» (например, как статический метод, который принимает получатель в качестве параметра), но я думаю, что он будет работать - вы пробовали это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...