2011-10-19 28 views
16

你将如何使LINQ-TO-SQL类型的提供者,生成或/和再生类?类型提供程序:如何重新生成?

我刚刚在我的数据库中添加了一个新表,而类型提供者无法弄清楚。我试图用类型提供者删除这行,然后再输入一次 - 没有运气。我也试图重建..仍然没有运气。

编辑:

我定义的种类等的供应商:

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

,并用它喜欢:

let ctx = dbSchema.GetDataContext()

+0

请提供一些代码 – Ankur

+0

@Ankur,更新。 – ebb

回答

19

你是正确的 - 这似乎相当棘手。我在脚本文件中使用了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 

架构似乎使用连接字符串作为密钥被缓存,所以如果你改回去,你再拿到旧模式。我想这可能是一个错误,所以添加空白是一种可能的解决方法。

还有一个参数ForceUpdate,但这似乎没有任何效果,the documentation并没有多说这件事。

+8

“对字符串无关的改变”确实是强制更新的一种工作方式;我们在这里意识到API /可用性问题,并且我们会为最终的Beta版提供更好的解决方案。 – Brian

+13

关于此的任何消息?这已经超过4年了,我需要更新时对连接字符串做出无关紧要的更改,并且希望我不必这样做。 – Maslow

+0

小问题:当类型提供者试图访问在编译时不可用的资源(互联网关闭或远程主机关闭等)时会发生什么? – TesX

相关问题