【问题标题】:LINQ to SQL DataContext and Connection ProblemsLINQ to SQL DataContext 和连接问题
【发布时间】:2011-01-13 12:42:10
【问题描述】:

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

WEBSITE_HISTORY

数据源=MYCOMPUTER\SQLEXPRESS;初始目录=WebSiteHistory;集成安全性=TRUE

网站

数据源=my.dyndns.net;网络库=DBMSSOCN;初始目录=网站;用户 ID=网站用户;密码=*******;

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

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

【问题讨论】:

    标签: linq-to-sql connection datacontext


    【解决方案1】:

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

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

    【讨论】:

    • 我会试试这个。我已经删除了 WEBSITE_HISTORY 的数据上下文并重新添加了表格,并且我一直得到相同的行为,并且我肯定我的连接字符串是正确的。几乎就像 Visual Studio 无法识别我的 WEBSITE_HISTORY 的连接属性。
    • 我上面提到的方法更多地用于运行时而不是设计时......当它弹出你提到的警告时,这意味着与数据库的连接与上次尝试的连接不同连接到它(不同的用户 ID,或者数据库的名称不同)。我在工作中的多人团队中有这个弹出窗口,我们每个人都从本地数据库中拖入表格。所以我不确定是什么导致了你的具体问题;不确定我是否理解 100%。对不起。
    • 什么是“DC”?非常混乱的答案。
    【解决方案2】:

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

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

    【讨论】:

    • 对不起,我应该提到我有两个数据上下文。一个用于 WEBSITE,一个用于 WEBSITE_HISTORY。 WEBSITE 数据上下文工作得很好,它的 WEBSITE_HISTORY 给我带来了问题。也感谢您的反馈。我会更新我的问题。
    【解决方案3】:

    我放弃了,不再和设计师吵架。我现在按照 Brian 的建议传递连接字符串(即 DataAccess.Properties.Settings.Default.WEBSITEHISTORY_ConnectionString),它可以工作。当我检查属性文件时,我发现 WEBSITE_HISTORY 属性缺少这个

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

    我还没有研究它,但我敢打赌这会导致它使用我的 DataAccess 属性中的默认连接,而不是 Web 配置。

    根据 Brian 的 cmets,我认为他所描述的场景是导致这一切开始的原因。

    感谢大家的帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-16
      • 2012-05-20
      • 1970-01-01
      相关资源
      最近更新 更多