【问题标题】:Changing a model's datasource in MVC2 for release?在 MVC2 中更改模型的数据源以进行发布?
【发布时间】:2011-07-12 10:55:24
【问题描述】:

如果您急于理解这一点,请跳到最后一段。

我是 MVC2 的新手,我的任务是用它创建一个数据库管理应用程序。在花了几周时间掌握了窍门之后,我终于开始编写我的生产代码了。为了测试我的代码,我需要能够访问开发服务器上的数据库副本。当需要发布发布版本时,它显然需要与实时数据库一起使用。

最初,我创建了维护数据库的两个并排模型(使用实体框架),并将另一个的命名空间更改为 DevModels 之类的东西,而不是 Models,以避免名称冲突(它们是完全相同的模型,只是来源不同)。这导致的问题比解决的问题多。无论如何,在翻阅 Pro ASP.NET MVC 2 Framework 一书时,我有了一个好主意,只需更改 Web.Config 文件中的数据源。这样,当我发布应用程序时,它会自动拥有正确的数据源。长话短说,这并不完全奏效,导致的问题多于解决的问题。

无论如何,我已经环顾四周,但我什么也找不到。我发现的所有材料都相当不具体,让我更加困惑。我确信有一种简单的方法可以做到这一点,因为它必须是一种常见的事情。

所以,总而言之,我如何编写一次 MVC2 应用程序并能够将模型与不同的数据源一起使用,这样我就不必大量修改代码来制作我的应用程序的生产版本?

更新: 这是我更改之前和之后的连接字符串。之前=开发服务器

`metadata=res:///Models.MaintModel.csdl|res:///Models.MaintModel.ssdl|res://*/Models.MaintModel.msl;provider=System .Data.SqlClient;provider connection string='Data Source=EXP_POWERSUITE2;Initial Catalog="Maint DatabaseSQL";Integrated Security=True;MultipleActiveResultSets=True'"

`metadata=res:///Models.MaintModel.csdl|res:///Models.MaintModel.ssdl|res://*/Models.MaintModel.msl;provider=System .Data.SqlClient;provider connection string='Data Source=EXP_POWERSUITE;Initial Catalog="Maint DatabaseSQL";Integrated Security=True;MultipleActiveResultSets=True'"

另外,为了确保我有正确的连接字符串,我启动了一个新应用程序并制作了一个新的 edm,名称和所有内容都相同,但面向实时数据库。我一直在寻找任何明显的差异,但这与我上面的完全相同。

另外,我可以在我的应用程序中从数据库中检索和显示行。我只是无法添加它们。

我正在使用 MS SQL Server Manager 2008 R2。

【问题讨论】:

    标签: database visual-studio-2010 asp.net-mvc-2


    【解决方案1】:

    您可以通过更改 web.config 中的连接字符串以指向新数据源来获得所需的结果。这仅在您指向的新数据库将所有表、列、引用等作为您的开发数据库时才有效。如果不匹配,那么您的模型将与新数据库不匹配,您将收到错误。

    如果您决定对您的开发数据库进行更改,那么您必须确保更改在您指向的新数据库中,否则模型将不匹配。

    【讨论】:

    • 感谢您的回答。我想我提到过我曾经尝试过,但没有奏效。在这个过程中,我的应用程序有点乱,我无法修复它,所以我只是重新启动它并复制了我所有的代码/文件。这次我尝试更改连接字符串,它成功了!
    【解决方案2】:

    只是在发布时更改 web.config 中的连接字符串是我使用和推荐的,它会导致什么样的问题?

    如果数据库结构相同,它应该可以工作。

    【讨论】:

    • 感谢您的回复。我现在要澄清一点,我回到工作岗位上,可以再解决这个问题。我确实尝试过更改 web.config 中的连接字符串。但它只是简单地不起作用。我每次都会收到更新异常。我应该具体更改连接字符串的哪些方面?我只将 'Data Source=" 部分更改为另一台服务器的名称。此外,数据库确实与实时数据库的直接副本相同。
    • 也许您还必须更改凭据?尝试从另一台服务器上的数据库生成实体模型并检查web.config中的差异
    • 我已经试过了,连接字符串是一样的。无论哪种方式,问题都解决了,但我仍然不知道为什么我首先会遇到这个问题。 =(也许有一天我会弄明白的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多