0

MVC5、EF 6.0 代码优先、SQL

我有一个使用 SQL 数据库的远程托管 MVC5 网站。 我的目标是轻松编写代码以将托管数据库中的某些记录复制或复制/删除到本地数据库。所以我在我的开发项目中添加了一个额外的上下文,如图所示。

Public Class WebDbContext
  Inherits DbContext

  Public Sub New()
    MyBase.New("name=WebDbConnection")
    Me.Configuration.LazyLoadingEnabled = True
  End Sub

  Public Shared Function Create() As WebDbContext
    Return New WebDbContext()
  End Function

  Public Property table1 As DbSet(Of Class1)
  .
  .
  Public Property tableN As DbSet(Of ClassN)
End Class

and in web.config I added the connection string

<configuration>
  .
  .
  <connectionStrings>
    <add name="WebDbConnection" connectionString="Data Source=<ip>;Initial Catalog=<dbname>;User ID=<id>;Password=<pwd>;" providerName="System.Data.SqlClient" />
  </connectionStrings>
  .
  .

这个新的上下文允许我从开发项目中访问和操作网站数据库。我显然需要另一个我想在本地保存的数据库的上下文,但我才刚刚开始。我从这个方向开始,因为新上下文的类定义将始终与托管数据库保持同步,因为开发项目源自托管数据库中的类定义。有没有更好的方法来编写对远程数据库的访问?

但我真正的问题是:当我的下一次添加迁移发生时,我对这个新的 WebDbContext 有什么期望?每个上下文是否都会创建一个 EF 添加迁移要求,或者只是创建添加迁移要求的类定义并且其他上下文不会成为问题?

关于从开发项目访问生产数据库,我承认我们对待生产数据库的方式不同,但该项目处于早期开发阶段,正在寻求快速的编程解决方案。我了解到,稍后在进行生产时,可能需要使用不同的解决方案。

或者,当然,情况经常如此,如果有一种完全不同且被普遍接受的方式来实现我在一开始所说的目标,那可能是什么?

4

1 回答 1

1

不太确定我是否完全掌握了您的问题,但如果我了解您的问题的要点,您尝试拥有 2 个数据库(1 个本地数据库 + 1 个 SQL 服务器托管)并且想知道如何设置数据迁移。

首先,您需要 2 个连接字符串,1 个用于本地,1 个用于 SQL

然后在您的包管理器控制台中,您将需要运行以下命令:

enable-migrations
add-migration -Name firstDbMigrationScript -ConnectionStringName firstConnnectionString
add-migration -Name secondDbMigrationScript -ConnectionStringName secondConnnectionString

抱歉,如果这些东西不能正常工作,我正在根据记忆编码

于 2015-09-21T22:29:15.093 回答