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 添加迁移要求,或者只是创建添加迁移要求的类定义并且其他上下文不会成为问题?
关于从开发项目访问生产数据库,我承认我们对待生产数据库的方式不同,但该项目处于早期开发阶段,正在寻求快速的编程解决方案。我了解到,稍后在进行生产时,可能需要使用不同的解决方案。
或者,当然,情况经常如此,如果有一种完全不同且被普遍接受的方式来实现我在一开始所说的目标,那可能是什么?