Проблема с поставщиком типов — основная точка входа — синтаксис

Мне удалось получить фрагмент кода для запуска в сценарии .fsx. Я никогда не видел, чтобы он зацикливался на данных трека, которые я возвращаю. Поэтому я решил поместить его в файл .fs и скомпилировать. Я столкнулся с 2 проблемами. F# IDE подчеркивает ключевое слово type и let в строке let query =. Вот мой oode (ниже). Где я ошибся в синтаксисе?

open System
open System.Data
open System.Data.Linq
open Microsoft.FSharp.Data.TypeProviders
open Microsoft.FSharp.Linq

[<EntryPoint>]
let main argv = 
    type dbSchema = SqlDataConnection<"Data Source=SQLDEV;Initial Catalog=CDDB;Integrated Security=SSPI;">
            let db = dbSchema.GetDataContext()
            // Enable the logging of database activity to the console.
            db.DataContext.Log <- System.Console.Out
            let query1 =
                query {
                    for row in db.SoundRecording do
                    select row
                    take 50
                }
            query1 |> Seq.iter (fun row -> printfn "%s - %s" row.DisplayArtist row.DisplayTitle)
            0 // return an integer exit code

person BuddyJoe    schedule 20.11.2012    source источник


Ответы (1)


Это может сработать — у вас не может быть определений типов внутри функций.

open System
open System.Data
open System.Data.Linq
open Microsoft.FSharp.Data.TypeProviders
open Microsoft.FSharp.Linq
type dbSchema = SqlDataConnection<"Data Source=SQLDEV;Initial Catalog=CDDB;Integrated Security=SSPI;">
[<EntryPoint>]
let main argv = 

            let db = dbSchema.GetDataContext()
            // Enable the logging of database activity to the console.
            db.DataContext.Log <- System.Console.Out
            let query1 =
                query {
                    for row in db.SoundRecording do
                    select row
                    take 50
                }
            query1 |> Seq.iter (fun row -> printfn "%s - %s" row.DisplayArtist row.DisplayTitle)
            0 // return an integer exit code
person John Palmer    schedule 20.11.2012