如何在Linq中设置连接字符串到SQL构造函数

时间:2014-09-02 17:57:13

标签: asp.net vb.net linq-to-sql

我正在尝试为我的数据访问层设置连接字符串,该数据访问层使用来自另一个项目的Web.Config文件中的值。

我创建一个新的类库并添加一个dbml(Linq to SQL)文件并拖动一个表。

然后我将此代码添加到代码文件

Partial Public Class MyDataContext
    Public Sub New()
        MyBase.New(ConfigurationManager.ConnectionStrings("WebConnectionString").ConnectionString, mappingSource)
        OnCreated()
    End Sub
End Class

这给了我一个错误"' Public Sub New()'具有相同签名的多个定义。"

我理解错误意味着什么,所以快速搜索一下,当我重新编译项目时仍然存在同样的问题。接近这个的方法是覆盖OnCreated方法,所以我将代码更改为:

Private Sub OnCreated()
   Me.New(ConfigurationManager.ConnectionStrings("WebConnectionString").ConnectionString, mappingSource)
End Sub

这给出了错误"构造函数调用仅作为实例构造函数中的第一个语句"但没有很多方法可以克服它(我看到一些C#示例,但我确定我将它转换为正确的VB .Net代码)

经过进一步的研究,不管我做什么,我似乎无法在我的DAL中设置连接字符串,它应该使用来自另一个项目的Web.Config连接字符串值。

我可能做错了什么?

1 个答案:

答案 0 :(得分:3)

好的,首先在C#中:

 partial class MyDataContext
 {
     public static MyDataContext Create()
     {
          return new MyDataContext(ConfigurationManager.ConnectionStrings("WebConnectionString").ConnectionString, 
           mappingSource);
     }
 // etc
 }

现在,我尝试在VisualBasic.NET中翻译它

 Partial Public Class MyDataContext
 Public Shared Function Create() as MyDataContext
    return New MyDataContext (ConfigurationManager.ConnectionStrings("WebConnectionString").ConnectionString, 
           mappingSource)
End Function
End Class

通过:

调用
   Dim db as MyDataContext = MyDataContext.Create()