LINQ to SQL DataContext和连接问题

时间:2010-02-05 13:30:35

标签: linq-to-sql connection datacontext

我正在使用LINQ to SQL为我的网站访问两个数据库。第一个数据库是网站(我称之为WEBSITE)数据,第二个是交易历史(我称之为WEBSITE_HISOTRY)。当我在不久前将WEBSITE_HISOTRY中的表添加到我的datacontext时,我收到了某种警报,我点击了OK(可能不是最好的主意)。我记得有些事情是关于Visual Studio抱怨数据库的连接与我的配置或者那些行的东西不同。一切正常,直到我发布到我的服务器。我一直收到数据库找不到错误,当我记录连接字符串时,我发现了这个。

WEBSITE_HISTORY

Data Source = MYCOMPUTER \ SQLEXPRESS; Initial Catalog = WebSiteHistory; Integrated Security = TRUE

网站

Data Source = my.dyndns.net;网络库= DBMSSOCN;初始目录=网站;用户ID = WebsiteUser;密码= *******;

我还发现WEBSITE_HISTORY datacontext的构造函数需要一个连接字符串(与具有无参数构造函数的WEBSITE不同)。我改变了构造函数,但每次我将一个表添加到datacontext时,它都会改回来。我已经阅读了另一个关于将DataContext连接属性设置为Application = true的问题。我试过了,但是我无法将“设置属性名称”设置为正确的连接。

我不确定我做了什么煽动这种行为。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:0)

你所做的不会起作用。数据库上下文是与单个数据库的连接。您不应尝试将其他数据库中的表添加到特定上下文。事实上,这可能根本行不通。如果您发现自己正在处理多个数据库,那么您将需要拥有多个数据库上下文对象,每个数据库对应一个数据库。

顺便说一下,如果您接受更多对问题的回答作为答案,我想你会发现你会得到更多问题的答案。您的录取率仅为25%左右。这可能会阻止人们回复你。

答案 1 :(得分:0)

数据上下文应该有多个重载的构造函数可供您使用;其中一个要求连接字符串。我会建议一直使用这个;原因是这允许您更改为指向具有相同结构的新数据库,并且它将以这种方式工作。我倾向于创建一个静态类来创建我的数据上下文类,以使这更容易:

public static class ContextCreator
{
   public static CustomDataContext Create()
   {
     return new CustomDataContext(ConfigurationManager.ConnectionStrings["CName"].ConnectionString);
   }
}

答案 2 :(得分:0)

我放弃了并且停止了与设计师的战斗。我正在传递Brian建议的连接字符串(即DataAccess.Properties.Settings.Default.WEBSITEHISTORY_ConnectionString)并且它可以工作。当我检查属性文件时,我发现WEBSITE_HISTORY属性缺少此

[global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.ConnectionString)]

我还没看过它,但我打赌这导致它在我的DataAccess属性中使用默认连接而不是web配置。

根据Brian的评论,他所描述的情景是我认为导致这种情况开始的。

感谢您的帮助!