【发布时间】:2015-01-04 03:56:59
【问题描述】:
我有 2 个项目的解决方案:
- F# 项目(用于数据访问 + 其他功能)
- C# Web 项目(将使用 F# 中的函数)
我需要调用 SQL Server 存储过程,并使用 FSharp.Data.TypeProviders 来完成这项工作。
type dbSchema = SqlDataConnection< "...", StoredProcedures=true >
let getDbContext connString =
match connString with
| "" -> dbSchema.GetDataContext()
| _ -> dbSchema.GetDataContext(connString)
插入:
let insertItem dbContext item =
dbContext.CreateStoredProc(item.Stuff)
或者
let insertItem connString item =
use dbContext = getDbContext connString
dbContext.CreateStoredProc(item.Stuff)
- 如何从 C# 中使用它,这样我就不会在每次插入时都重新创建
dbContext?
我不想公开整个 dbContext,只是通过 F# DAL 公开某些存储过程。
注意:我需要从 web.config 传入连接字符串
此处的类似问题并未完全提供我的答案:F# Type Provider for SQL in a class
- 我可以将
getDbContext设置为内部或私有,但不能设置dbSchema。有什么办法不暴露?
【问题讨论】:
-
"这样我就不会每次都重新创建 dbContext" 你为什么不想这样做?
-
如果我有它作为第一个插入,那么我可以创建一个 dbContext,并像这样传递它:[items] |> Seq.map (insertItem dbContext) 我不确定这是否是个好主意,但不要每次都重新创建上下文......
-
另外,Tomas 在链接的答案中说“这会为每个工厂创建一个新的数据库实例”,这让我觉得这并不理想。
标签: c# sql-server f# type-providers