F # Linq to sql - вызвать хранимую процедуру - PullRequest
2 голосов
/ 13 мая 2011

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

вот моя попытка:

member X.CountStatistics ha = 
    <@ linq.IncidentStatistix(ha) @>
    |> query 
    |> Seq.map (fun s -> s.Name, s.Stat)
    |> Array.ofSeq

Параметр получил тип бита. Linq преобразовал его как Nullable (не знаю, почему nullable), и поэтому я передаю значение там, и он терпит неудачу с

The following construct was used in query but is not recognised by the F#-to-LINQ query translator:
Call (Some (FieldGet (Some (Value (IncidentStats+ins)), LinqBase.FRIIB linq)),
      System.Data.Linq.ISingleResult`1[LinqBase.IncidentStatistixResult] IncidentStatistix(System.Nullable`1[System.Boolean]),
      [Value (false)])
This is not a valid query expression. Check the specification of permitted queries and consider moving some of the query out of the quotation

что я делаю не так?

1 Ответ

1 голос
/ 13 мая 2011

При вызове хранимой процедуры (представленной как метод DataContext) вам не нужно заключать вызов в кавычки.Он может быть выполнен как обычный метод (без query):

member X.CountStatistics ha = 
    linq.IncidentStatistix(ha)
    |> Seq.map (fun s -> s.Name, s.Stat)    
    |> Array.ofSeq

Вы также можете использовать понимание последовательности seq { ... } или понимание массива [| ... |], чтобы сделать дополнительную обработку - возможно - немного приятнее:

member X.CountStatistics ha = 
    [| for s in linq.IncidentStatistix(ha) -> s.Name, s.Stat |]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...