【问题标题】:Azure mvc web app deploy with 2 dbcontexts and class library使用 2 个 dbcontexts 和类库部署 Azure mvc Web 应用程序
【发布时间】:2017-08-18 08:54:53
【问题描述】:

大家好,我正在尝试将 mvc 应用程序部署到 azure。到目前为止,我完成了一半的工作。因此,具有 AplicationDbContext 的主要 Web 应用程序是我的 Identity2.0 表用于用户和角色等。现在,我有模型的 DAL 类库和应用程序的其余部分的 QuizContext。我如何使用一个数据库实例来存储这两个上下文,正如您从左侧的服务器资源管理器中看到的那样,它在 localhost 上完成,但是当我尝试在 azure 上发布它时,只部署了 mvc web 项目。只是为了确保我与 sql management studio 连接到 azure 数据库,它只显示身份表。在网上搜索了几天以找到解决方案后,我放弃了,因为它们都是基本的东西。

你能帮我实现吗:D 我的目标是使用 azure 上的一个数据库部署具有类库和 2 个 DbContexts 的 Web 应用程序。

非常感谢。

链接到图片,以便您更好地了解我的问题

http://testic1.azurewebsites.net/

【问题讨论】:

  • 您需要更改您的数据库连接字符串(在 web.config 中)以指向您的 Azure SQL Server...您是否真的看过任何教程,因为这是一个基本点?
  • 是的,我做到了,谢谢你的回答。问题是如果我保留默认的 con 字符串,它仍然可以工作。我有点确定 con 字符串没有问题。而是我需要配置一些其他的东西。只是不知道是什么。应用程序按原样工作。它只是不使用第二个数据库上下文上传 dal 类库
  • “不上传dal类库”是什么意思?你怎么会知道这事?在您引用它的地方发布错误消息和部分代码...
  • 我在下面发布了代码

标签: c# asp.net-mvc entity-framework azure azure-web-app-service


【解决方案1】:

没有错误消息。在发布控制台上,我刚刚发布了项目 - 1 就是这样。

这是来自类库的 dbcontext

namespace Quiz.DAL
{
    public class QuizContext : DbContext
    {
        public QuizContext() : base("name=DefaultConnection")
        {
        }
        public virtual DbSet<Option> Options { get; set; }
        public virtual DbSet<Question> Questions { get; set; }
        public virtual DbSet<Category> Categories { get; set; }
        public virtual DbSet<Test> Tests { get; set; }
    }
}

这是来自 mvc Web 应用程序的 dbcontext

namespace Quiz.Models
{
    public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
    {
        public ApplicationDbContext()
            : base("DefaultConnection", throwIfV1Schema: false)
        {
        }   
        public static ApplicationDbContext Create()
        {
            return new ApplicationDbContext();
        }
    }
}

这是来自 mvc web 项目的连接字符串,DAL 类库没有连接字符串

<connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Quiz.mdf;Initial Catalog=Quiz;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>

【讨论】:

  • 好吧,如果在您部署的项目中的任何地方都没有引用它,它将不会被部署....尝试在主项目中使用它并重新部署
  • 我确实引用了它。但是我想通了。这件事是你必须在构造函数和 web.config 的基础上更改每个 dbcontext 的连接字符串名称。
  • ...如果在 Web.Config 中找到一个,则不使用构造函数基础中的那个,所以正如我所说 - 你只需要更改 web.config 中的连接字符串 lol
猜你喜欢
  • 1970-01-01
  • 2012-09-17
  • 1970-01-01
  • 2018-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-28
  • 1970-01-01
相关资源
最近更新 更多