1)如何构造一个到数据库的通用连接字符串?
没有通用的方法来构造连接字符串。最好的办法是将连接字符串保存在某个配置文件中,您可以在其中根据您的配置(SQL Server 机器的名称、身份验证选项、它是基于文件的数据库还是普通数据库)来更改它。有一个网站提供了大多数选项的示例。
2)我注意到它是 IDisposable。因此,如果我有多个用户访问我的网站,我的代码一次只能访问一个数据库实例 [...]?
不,这不是DataContext
工作方式。DataContext
不会保持与服务器的实时连接,这会阻止其他任何人使用 SQL 服务器。它保留一些状态(即已经获得的缓存实体)并使用乐观并发来确保状态是一致的(如果您想要的话,您可以使用事务来阻止其他连接)。
3) 是否有可能以某种方式在 F#-Interactive [...] 中启用 LINQ?
那应该不是问题。#r "foo.dll"
您可以在 F# 交互中使用引用程序集。F# 2.0 的典型方法是使用 C# 工具生成数据上下文,然后引用它(对于 F# 3.0,事情更容易,因为您可以使用类型提供程序)。
如果您在 C# 中生成 LINQ to SQL 数据上下文Northwind
,则 F# Interactive 使用将如下所示:
#r @"<whatever_path>\Northwind.dll"
#r "System.Data.Linq.dll"
open Northwind
open Microsoft.FSharp.Linq
let connStr = @"Data Source=.\SQLEXPRESS;AttachDbFilename=<path>\NORTHWND.MDF;" +
@"Integrated Security=True;User Instance=True"
let operation () =
// Using 'use' to make sure it gets disposed at the end
use db = new NorthwindDataContext(connStr)
// do something with the database