Я создал приложение F # и теперь я использую EF4.1 (сначала код) в качестве хранилища данных.Я наткнулся на действительно странную проблему, связанную с набором текста.
Возьмите следующий фрагмент:
let result = context
.SearchResults
.Where((fun (r:SearchResult) ->
r.Program = request.Program))
.OrderByDescending((fun r -> r.AcquisitionDate))
.FirstOrDefault()
match result with
| price ->
cacheProvider.Set(result)
Some(price)
| _ ->
ignore(context.SearchRequests.Add(request))
ignore(context.SaveChanges())
None
, когда результат поиска не существует, вызов .FirstOrDefault () возвращает ноль.Таким образом, результат связан с null во время выполнения.Но во время компиляции F # компилятор ожидает, что результат никогда не будет null , поэтому я не могу выполнить проверку шаблона вокруг null ( цена, когда цена <> нуль ).
Что мне здесь не хватает?Есть ли правильный способ сделать это?