类型提供程序:如何重新生成?

21

如何让 LINQ-TO-SQL 类型提供程序生成或/和重新生成类?

我刚刚在我的数据库中添加了一个新表,但类型提供程序无法识别它。我尝试删除类型提供程序中的代码行,并重新输入 - 但没有成功。我还尝试过重新构建...仍然没有成功。

编辑:

我定义了类型提供程序如下:

[<Generate>]
type dbSchema = SqlDataConnection<"conString">

并且像这样使用:

let ctx = dbSchema.GetDataContext()


请提供一些代码。 - Ankur
1个回答

23

你说得对 - 这似乎相当棘手。我在脚本文件中使用了 SqlDataConnection 类型提供程序,迄今为止我找到的更新模式的唯一方法是在连接字符串中进行一些微小(无关紧要)的更改。例如,在其中一个参数的=后添加空格:

[<Generate>]
type Northwind = TypeProviders.SqlDataConnection
  <"data source=.\\sqlexpress;initial catalog=Northwind;integrated security=True">

[<Generate>]
type Northwind = TypeProviders.SqlDataConnection
  <"data source=.\\sqlexpress;initial catalog=Northwind;integrated security= True">

//                                                                          ^ here

似乎使用连接字符串作为键来缓存模式,所以如果你将其改回去,就会再次得到旧的模式。我猜这可能是一个 bug,因此添加空格是一种可能的解决方法。

还有一个参数 ForceUpdate,但它似乎没有任何效果,文档 没有多少说明。


9
“无关的更改字符串”确实是一种强制更新的有效方法;我们意识到这里存在API/可用性问题,并且我们将在最终的Beta版中提供更好的解决方案。” - Brian
17
有任何最新的消息吗?已经过去4年多了,当我需要更新时,我一直在做无关紧要的连接字符串更改,并且希望不必这样。 - Maslow
小问题:当类型提供程序尝试访问在编译时不可用的资源(如网络中断或远程主机宕机等)时会发生什么? - TesX
3
六年后,是否仍然建议在连接字符串中插入良性垃圾? - J D
2
现在是我们的主耶稣基督之年,二零二零年,我们不断地在此处和彼处插入空格以重新生成类型,正如本书所规定的那样。 - Asti

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接