当前位置: 首页 > 面试题库 >

类中SQL的F#类型提供程序

束雅达
2023-03-14
问题内容

我正在编写要与Azure Worker角色一起使用的F#。我希望类将连接字符串a作为参数。我创建一个数据库连接

type dbSchema = SqlDataConnection<"...">
let db = dbSchema.GetDataContext()

但是dbSchema是一种类型,因此无法将其嵌入到我的类中(另一种类型)。我可以创建两个单独的模块,一个与数据库连接,另一个与我的课程

module DataSource =

    [<Literal>]
    let connectionString = "Data Source=.\SQLEXPRESS;Initial Catalog=Service;Integrated Security=True"

    type dbSchema = SqlDataConnection<connectionString>
    let db = dbSchema.GetDataContext()

module DealerFactory =

    type Factory(connectionString) =

        member this.GetList(latitudeLeftTop, lonhtml" target="_blank">gitudeLeftTop, latitudeRightBottom, longitudeRightBottom) =
        ".."

但是,如何在类的构造函数中使用connectionString创建连接?


问题答案:

SQL数据库的类型提供程序将连接字符串用于两个不同的目的。首先,它需要一个(在编译时)来生成数据库模式。其次,您可以(可选)给它另一个供您在实际运行程序时在运行时使用。

需要在中指定编译时连接字符串作为参数,SqlDataConnection<...>并且可以将运行时连接字符串传递给GetDataContext(...)操作。

因此,您可以使用静态已知的编译时连接字符串来定义类型:

[<Literal>]
let connectionString = "Data Source=.\SQLEXPRESS;Initial Catalog=Service; ..."
type dbSchema = SqlDataConnection<connectionString>

而且,当您要创建数据库连接的实例时,可以向其传递另一个连接字符串:

type Factory(connectionString) =
  // Create connection to the DB using (a different)
  // connection string specified at runtime
  let db = dbSchema.GetDataContext(connectionString)

  member this.GetList( latitudeLeftTop, longitudeLeftTop, 
                       latitudeRightBottom, longitudeRightBottom) =
    // Use local 'db' to access the database
    query { for v db.Table do select v }

与您的原始代码(db在模块中具有值)相比,这会db为each创建一个新的实例Factory,但是我想如果Factory将连接字符串作为参数,这是可以预期的。



 类似资料:
  • 本文向大家介绍F# 使用CSV类型提供程序,包括了F# 使用CSV类型提供程序的使用技巧和注意事项,需要的朋友参考一下 示例 给定以下CSV文件: 您可以使用以下脚本读取数据:            

  • 问题内容: class Node: def append_child(self, node: Node): if node != None: self.first_child = node self.child_nodes += [node] 我该怎么办?因为当我运行它时,它说。 我应该只删除and实例在函数中检查它吗?但是,我该如何访问的属性(我希望它是类的实例)? 我不知道如何在Python,

  • 我有以下代码,旨在列出在Freebase上上市的证券交易所网站: 没有最后两行(即只列出交换名称),代码运行良好。有了这些线路,我得到了400(糟糕的请求)。 该行生成的URL如下: https://www.googleapis.com/freebase/v1/mqlread?query=[{"/type/对象/id": null,"/type/对象/名称": null,"可选": true,"/

  • 我正在尝试使用StreamProvider使firestore文档流中的数据在我的应用程序中可用。这是一个食谱应用程序,这是购物清单。 我有一个模型RecipeItem,其中包含关于食谱中项目的详细信息。这个文件保存一个数组,称为列表,包含列表中每个项目的映射。 下面是我与firestore的连接并设置流。我尝试获取文档,然后使用用户映射为列表中的每个项目创建RecipeItem实例。方法如下:

  • 我有一个Guice,它的构造函数接受注入的参数: 现在,我希望能够注入参数取决于我运行此参数的环境。在测试中,我想注入一个 MyConfiguration 对象,而在生产中,我想注入另一个对象。 我有两个MyConfiguration提供程序。MyConfigurationProvider读取外部配置文件并从那里获取配置。MyConfigurationTestProvider只是对所有设置进行硬编

  • 问题内容: 我想允许使用Python 3进行类型提示,以接受某个类的子类。例如: 现在,当输入以下代码时: 我得到一个PyCharm IDE提示“期望的类型A,取而代之的是Type [B]。” 如何更改此处的类型提示以接受A的任何子类型? 据此(https://www.python.org/dev/peps/pep-0484/#type-definition- syntax ,“该类型的参数也接受