mrj*_*ght 6 f# entity-framework app-config
F#的新手,所以我仍然习惯于"类型推断".我试图在F#中使用EntityFramework,当我尝试构建连接时,我得到的错误是我的连接字符串(从app.config中读取)是"不是有效的常量表达式或自定义属性值".如果我对连接字符串进行硬编码就可以了,就像你期望的那样.
open FSharp.Configuration
type Settings = AppSettings<"app.config">
let ConnStr = Settings.ConnectionStrings.Model
type private Connection = SqlEntityConnection<ConnectionString=ConnStr, Pluralize = true>
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?这样做有不同的"F#方式"吗?
SqlEntityConnection是类型提供者.类型提供程序在编译时工作(将它们视为编译器插件;或者如果您使用的是Lisp,请将它们视为穷人的宏).因此,需要在编译时知道所有Type Provider参数.
现在,问一个问题:ConnStr在编译时是否已知?
不,当然不是,因为你想从配置文件中解除它.
您应该使用的方式是:
Connection.GetDataContext,将运行时连接字符串作为参数赋予它.这将告诉它连接到配置中实际指定的任何数据库,而不是编译时硬编码的数据库.| 归档时间: |
|
| 查看次数: |
268 次 |
| 最近记录: |