代码之家  ›  专栏  ›  技术社区  ›  rgargente Chelsea Urquhart

LINQ到SQL部署问题

  •  0
  • rgargente Chelsea Urquhart  · 技术社区  · 17 年前

    我开发了一个asp.net应用程序。它使用LinqtoSQL访问数据库,在VisualStudio2008中使用.dbml设计器。我们正在客户机上安装应用程序,他们决定更改服务器上的数据库名称。现在,应用程序无法工作,因为LINQ无法找到数据库信息。这不是连接字符串的问题,而是.dmbl设计器生成的文件的问题。我想我们有一些选择: 2.在客户机上安装VS2008并进行必要的修改。

    所有的选择似乎都不是很好。这不是世界末日,但却是真正的痛苦。我希望有一个更合理的解决方案!有什么想法吗?



    在你的答案的帮助下进一步研究了这个问题之后,我认为问题在于模式。总之,数据库有一个新名称和一个新模式。我认为sqlmetal.exe选项是目前最好的选项。无论如何,如果是这样的话,我仍然认为这是一个真正的痛苦。

    4 回复  |  直到 17 年前
        1
  •  4
  •   eglasius    17 年前

    我认为这是一个连接字符串问题,请参见生成的类:

        public SomeDataContext() : 
            base(global::System.Configuration.ConfigurationManager
    .ConnectionStrings["someConnectionStringKey"].ConnectionString, mappingSource)
    

    请提供更多信息。也许您指的是模式更改,在这种情况下,我强烈建议在开发环境中也进行同样的更改。

    也许生成的类上的DatabaseAttribute让您感到困惑。

    要指定的DatabaseAttribute属性 当一个数据库名

    资料来源: http://msdn.microsoft.com/en-us/library/bb399355.aspx#

    只需在连接字符串中指定数据库,就可以了。

    如果由于某种原因生成的类没有上面的代码(并且您没有在参数中显式指定代码),请在设计器中打开它,打开属性,并确保在Connection属性中配置它,并将Applications设置设置为True。

        2
  •  1
  •   James Curran    17 年前

    VS2008类SQLMetal.exe中有一个exe,它是生成DataContext.cs文件的重要部分。我认为您所要做的就是更改DBML文件(这是一个简单的XML文件),运行SQLMetal(生成一个.CS),然后运行csc.exe(作为.NET framework的一部分)来生成一个程序集(如果您将DataContext单独放在一个程序集中会更容易)。这基本上归结为选项2,但需要安装的文件要少得多。


    使现代化 当前位置重新阅读您的问题,我意识到改变的不是表名,而是 数据库 名称这是一个不同的问题(尽管上述解决方案也适用于此)。

    零参数ctor使用创建dbml时使用的连接字符串,然后将其嵌入到资源文件中。这是一个 难以置信地 愚蠢的设计,实际上应该只用于概念验证代码和演示。

    所有实际的生产代码都应该使用ctor,它接受一个字符串——特别是连接字符串——您应该从app.config文件中读取该字符串。

    这当然意味着“正确”的解决方案是选项1——在办公室重写代码并重新部署。这很麻烦,但从长远来看,这是最好的。

        3
  •  0
  •   Richard B    17 年前

    作品:

    我很惊讶这会引起一个问题。我已经使用LINQtoSQL开发了大约5个插件。为了避免这种情况,我唯一要做的就是做以下事情:

    使用(NamedDataContext ctx=new NamedDataContext(“{insert connectionstring from config file/registry entry/etc.here}”))

    ... 要针对数据库执行的代码。。。

    目前还没有遇到任何问题。我不明白为什么您的应用程序没有配置方法来处理配置数据库连接,因为这通常是大多数应用程序需要内置的第一件事。

        4
  •  0
  •   HLGEM    17 年前

    就我个人而言,我会告诉客户,更改开发的数据库名称将花费他们XX美元的新开发成本,并看着他们立即更改名称。

    推荐文章