gpt4 book ai didi

c# - Entity Framework 多上下文和 Microsoft Azure。如何更新数据库?

转载 作者:太空狗 更新时间:2023-10-29 20:30:39 26 4
gpt4 key购买 nike

我有 ASP.NET MVC 5 解决方案,里面有大约 4 个项目。 + EF 代码优先看完this article
我尝试将应用程序 EF 上下文(asp.net 身份)与我的模型上下文分开。(​​两个上下文都在单个数据库中)

现在我有 2 个具有不同背景的项目。

//main project
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("MyDB")
{
}
}
//another project
public class DALDbContext : DbContext
{
public DALDbContext()
: base("MyDB")
{
}
...
}

我可以像这样更新数据库:

update-database -ProjectName:myProject.WEB

update-database -ProjectName:myProject.DAL

(在网络中我有 ASP.NET 身份)

如果我要从 Azure 中的 VisualStudio 发布此解决方案,我可以选中“执行代码优先迁移(在应用程序启动时运行)”。

enter image description here

但是如果我理解正确的话,它将只相当于一个命令:

update-database -ProjectName:myProject.WEB

因为它是默认项目。

我不明白如何运行这两个命令。另一方面,我尝试分别执行这两个命令。我在“包管理器控制台”中写了类似的内容:

Update-Database -ConnectionString "Server=tcp:<server_name>.database.windows.net,1433;Database=<database_name>;User ID=<db_user_name>@<server_name>;Password=<password>;Trusted_Connection=False;Encrypt=True;MultipleActiveResultSets=True;Max Pool Size=100;" -ConnectionProviderName "System.Data.SqlClient"

但我收到错误:“ConnectionString 属性尚未初始化。”

或者可能尝试从另一种方法运行一种种子方法...(但我认为这很糟糕)

最后 - 2 个问题:

  1. 将一个上下文与另一个上下文分开是个好主意吗?
  2. 如何在 azure 上运行此种子方法?(或您的变体)

最佳答案

我自己解决问题。

我做了什么:

从 azure 站点获取实际连接字符串。 事情是这样的:

Data Source=tcp:"<address>.database.windows.net,1433;
Initial Catalog=MyDB;
User Id=<login>@<address>;Password=<password>;

我还添加了“persist security info=True;”(可能不是必需的)所以我们有

Data Source=tcp:"<address>.database.windows.net,1433;
Initial Catalog=MyDB;persist security info=True;
User Id=<login>@<address>;Password=<password>;

(单词之间需要有空格(例如“数据源”))

接下来将此连接字符串粘贴到您的 Web.config 文件中。你必须得到这样的东西:... .database.windows.net,1433;初始目录=MyDB;持久安全信息=True;用户ID=@;密码=“/>

(如果您没有这些标签 - 复制粘贴并更改)

现在查看您的 dbContext 文件。

public class DALDbContext : DbContext
{
public DALDbContext ()
: base("MyDB")
{
}
...
}

确保 Web.config 中的 connectionString name(name="MyDB") 等于该值。(以及其他 dbContext 类中)

最后只需在包管理器控制台中编写更新数据库命令即可:

update-database -ProjectName:myProject.WEB

update-database -ProjectName:myProject.DAL

关于c# - Entity Framework 多上下文和 Microsoft Azure。如何更新数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23920433/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com