F#。如何将SQLite连接字符串传递给EF

时间:2015-02-05 10:52:19

标签: entity-framework sqlite f#

我正在尝试使用System.Data.Sqlite使SQLite与EF6和F3一起工作。

我正在按照这里描述的演练进行操作并获得edmx文件和C#程序进行编译(之前我已经完成了)。 Walkthrough: Generating F# Types from an EDMX Schema File (F#)

默认代码在设计时没有显示错误,并且VS收集了表结构。基本上,edmx文件没问题。

type internal edmx = EdmxFile<"ModelK.edmx">

[<EntryPoint>]
let main argv = 
    let context = new edmx.MyBaseModel.MyBaseEntities(strBulder)

    query { for course in context.T1 do
            select course.r1 }
    |> Seq.iter (fun course -> printfn "%s" course)

    printfn "%A" argv
    0 // return an integer exit code

我正在使用NuGet包System.Data.SQLite EF6 1.0.94.0,deps EntityFramework 6.1.1,System.Data.SQLite Core 1.0.94.0并从SQLite端安装捆绑包(一个支持VS2013)。

我的问题是sql连接字符串。 EF需要连接字符串与meta,常规sting不起作用。

这是我设计师的原始连接字符串。

@"metadata=res://*/ModelK.csdl|res://*/ModelK.ssdl|res://*/ModelK.msl;provider=System.Data.SQLite.EF6;provider connection string=&quot;data source=D:\VS2013\FSharp940\FSharp940MyBase.db&quot;" providerName="System.Data.EntityClient""

到目前为止我已尝试过:

  1. 传递转义(&#34;制作有效字符串和其他一些转义序列)到MyBaseEntities(strBulder)。
  2.   

    System.ArgumentException未处理消息:未处理的异常   类型&#39; System.ArgumentException&#39;发生在System.Data.Entity.dll中   其他信息:不支持关键字:数据源。

    1. 遵循一些SO建议并取代&#34;与&#39;。 读取模式时出现错误,必须以/开头,然后除以:。

        

      类型提供者   &#39; Microsoft.FSharp.Data.TypeProviders.DesignTime.DataProviders&#39;   报告错误:读取架构时出错。 fel 7005:参数   source = D:\ VS2013 \ FSharp940 \ FSharp940 \ MyBase.db har angetts p†ett   felaktigt s“tt。 Alla v“xlar m†ste b”rja med tecknet / och namnet m†ste   avgr“nsas fr†n v”rdet med kolon&#39;:&#39;。&#39;。

    2. 将我的C#App.Config实体连接字符串和其他东西带到我的F#App.Config并从那里读取。

    3.   

      输入内部FooDb =   SqlEntityConnection&LT;的connectionStringName =&#34; MyBaseEntities&#34 ;,   通过ConfigFile =&#34;的App.config&#34;&GT;

      不。

        

      类型提供者   &#39; Microsoft.FSharp.Data.TypeProviders.DesignTime.DataProviders&#39;   报告错误:读取架构时出错。 fel 7005:参数   源= d:\ VS2013 \ FSharp940 \ FSharp940 \ MyBase.db

      我确实理解它正在抱怨filepath并用它做了一些实验而没有任何结果

        

      类型提供者   &#39; Microsoft.FSharp.Data.TypeProviders.DesignTime.DataProviders&#39;   报告错误:读取架构时出错。 fel 7001:keywork st“ds not:   元数据。

      1. 最后我尝试了EntityConnectionStringBuilder。

        let strBulder = 
            let conn = new EntityConnectionStringBuilder()
            conn.Metadata <- @"res://*/ModelK.csdl|res://*/ModelK.ssdl|res://*/ModelK.msl;"    
            conn.Provider <- @"System.Data.EntityClient"
            conn.ConnectionString <- @"D:\VS2013\FSharp940\FSharp940\MyBase.db"
            let ec = new EntityConnection(conn.ToString())
            ec
        
      2. 新人......

          

        未处理的类型&#39; System.TypeInitializationException&#39;   发生在未知模块中。

        我写给conn.ConnectionString的所有内容都会引发异常,包括没有任何路径的MyBase.db。

        我看到问题出现在连接字符串中,可能是我的文件路径,但目前还不知道格式是什么。我的意思是...... EF必须了解它自己的配置文件,对吧?

        有什么想法吗? :)

0 个答案:

没有答案