在 EF 中,添加迁移是由 class 更改触发的还是由上下文接口触发的?
In EF are add-migrations triggered by class changes or by the context interface?
MVC5,EF 6.0 代码优先,SQL
我有一个使用 SQL 数据库的远程托管 MVC5 网站。 我的 objective 是 轻松编码以将托管数据库中的某些记录或 copy/delete 复制或 copy/delete 到本地数据库。因此,我向我的开发项目添加了一个额外的上下文,如图所示。
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>
.
.
这个新上下文允许我从开发项目访问和操作网站数据库。我显然需要为要在本地保存的数据库提供另一个上下文,但我才刚刚开始使用它。我朝这个方向开始,因为新上下文的 Class 定义将始终与托管数据库保持同步,因为开发项目源自托管数据库中的 Class 定义。有没有更好的方法来编码对远程数据库的访问?
但我真正的问题是:当我进行下一次添加迁移时,我对这个新的 WebDbContext 有何期待?是每个上下文都创建了一个 EF 添加迁移要求,还是只是 Class 定义创建了添加迁移要求并且其他上下文不会有问题?
关于从开发项目访问生产数据库,我知道我们对待生产数据库的方式不同,但该项目处于早期开发阶段,正在寻求快速的编程解决方案。我了解到稍后在生产过程中可能需要不同的解决方案。
或者,当然,通常情况下,如果有一种完全不同且普遍接受的方式来完成我一开始所说的 objective,那可能是什么?
不太确定我是否完全理解你的问题,但如果我明白了你的问题的要点,你试图拥有 2 个数据库(1 个本地数据库 + 1 个 SQL 服务器托管)并且想知道如何设置数据迁移。
首先,您需要 2 个 connectionString,1 个用于本地,1 个用于 SQL
然后在您的包管理器控制台中,您需要运行命令:
enable-migrations
add-migration -Name firstDbMigrationScript -ConnectionStringName firstConnnectionString
add-migration -Name secondDbMigrationScript -ConnectionStringName secondConnnectionString
抱歉,如果这些东西不能正常工作,我正在凭记忆编码
MVC5,EF 6.0 代码优先,SQL
我有一个使用 SQL 数据库的远程托管 MVC5 网站。 我的 objective 是 轻松编码以将托管数据库中的某些记录或 copy/delete 复制或 copy/delete 到本地数据库。因此,我向我的开发项目添加了一个额外的上下文,如图所示。
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>
.
.
这个新上下文允许我从开发项目访问和操作网站数据库。我显然需要为要在本地保存的数据库提供另一个上下文,但我才刚刚开始使用它。我朝这个方向开始,因为新上下文的 Class 定义将始终与托管数据库保持同步,因为开发项目源自托管数据库中的 Class 定义。有没有更好的方法来编码对远程数据库的访问?
但我真正的问题是:当我进行下一次添加迁移时,我对这个新的 WebDbContext 有何期待?是每个上下文都创建了一个 EF 添加迁移要求,还是只是 Class 定义创建了添加迁移要求并且其他上下文不会有问题?
关于从开发项目访问生产数据库,我知道我们对待生产数据库的方式不同,但该项目处于早期开发阶段,正在寻求快速的编程解决方案。我了解到稍后在生产过程中可能需要不同的解决方案。
或者,当然,通常情况下,如果有一种完全不同且普遍接受的方式来完成我一开始所说的 objective,那可能是什么?
不太确定我是否完全理解你的问题,但如果我明白了你的问题的要点,你试图拥有 2 个数据库(1 个本地数据库 + 1 个 SQL 服务器托管)并且想知道如何设置数据迁移。
首先,您需要 2 个 connectionString,1 个用于本地,1 个用于 SQL
然后在您的包管理器控制台中,您需要运行命令:
enable-migrations
add-migration -Name firstDbMigrationScript -ConnectionStringName firstConnnectionString
add-migration -Name secondDbMigrationScript -ConnectionStringName secondConnnectionString
抱歉,如果这些东西不能正常工作,我正在凭记忆编码