chr*_*igo 7 c# asp.net entity-framework azure ef-migrations
我有ASP.NET MVC 5解决方案,里面有大约4个项目.+ EF代码优先阅读本文后,
我尝试将应用程序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")
{
}
...
}
Run Code Online (Sandbox Code Playgroud)
我可以像这样更新数据库:
update-database -ProjectName:myProject.WEB
update-database -ProjectName:myProject.DAL
(在网上我有asp.net身份)
如果我将从Azure中的VisualStudio发布此解决方案,我可以检查"执行代码优先迁移(在应用程序启动时运行)".
但如果我理解正确,它将只相当于一个命令:
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"
Run Code Online (Sandbox Code Playgroud)
但我得到错误:"ConnectionString属性尚未初始化."
或者可能尝试从另一个种子方法运行...(但我认为它变化很糟糕)
最后 - 2个问题:
我自己解决问题。
我做了什么:
从天蓝色站点获取实际的连接字符串。是这样的:
Run Code Online (Sandbox Code Playgroud)Data Source=tcp:"<address>.database.windows.net,1433; Initial Catalog=MyDB; User Id=<login>@<address>;Password=<password>;
我还添加了“persist security info=True;”(可能不是必要的)所以我们有
Run Code Online (Sandbox Code Playgroud)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;Initial Catalog=MyDB;persist security info=True;User Id=@;Password=" />
(如果您没有这些标签 - 复制粘贴并更改)
现在查看您的 dbContext 文件。
public class DALDbContext : DbContext
{
public DALDbContext ()
: base("MyDB")
{
}
...
}
Run Code Online (Sandbox Code Playgroud)
确保 Web.config 中的 connectionString name(name="MyDB") 等于该值。(以及其他 dbContext 类中)
最后只需在包管理器控制台中编写更新数据库命令:
update-database -ProjectName:myProject.WEB
update-database -ProjectName:myProject.DAL
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1273 次 |
最近记录: |