在MVC2中更改模型的数据源以进行发布?

时间:2011-07-12 10:55:24

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

如果您急于达到目的,请跳到最后一段。

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

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

无论如何,我做了一些环顾四周,但我找不到任何东西。我找到的所有材料都非常不明确,让我更加困惑。我确信有一个简单的方法可以做到这一点,因为它是一个常见的事情。

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

更新: 这是我更改之前和之后的连接字符串。在= dev server

之前

`元数据= 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'“

`元数据= 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。

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

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