Azure 网站部署抛出.在 DataBaseFirst 和 CodeFirst 之间产生误导

本文关键字:之间 CodeFirst DataBaseFirst 部署 网站 Azure | 更新日期: 2023-09-27 17:57:05

我在尝试在 Azure 上部署 MVC 网站时遇到此"可怕"错误消息:

使用数据库优先和模型的 T4 模板生成的代码 如果在代码优先模式下使用,首次开发可能无法正常工作。 若要继续使用"数据库优先"或"模型优先",请确保实体 框架连接字符串在 的配置文件中指定 正在执行应用程序。使用这些类,这些类是从 数据库优先或模型优先,使用代码优先添加任何其他 使用属性或数据库模型构建器 API 进行配置,然后 删除引发此异常的代码。

数据库第一个工作流是从头开始使用的(添加 ADO.Net 实体数据模型元素,并随后连接到Azure SQL Server DB)。所以我不明白为什么它困扰着我代码优先。将 EF 6.0 与 T4 模板配合使用。生成的 DbContext 如下所示:

    public partial class MyAppEntities : DbContext
    {
        public MyAppEntities()
            : base("name=MyAppEntities")
        {
        }
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            throw new UnintentionalCodeFirstException();
        }
        public virtual DbSet<AType> AType { get; set; }
        public virtual DbSet<BType> BType { get; set; }
        // etc.
    }

连接字符串如下所示。在 DAL 项目和启动项目 Web 配置中复制:

<add name="MyAppEntities" connectionString="metadata=res://*/MyAppModel.csdl|res://*/MyAppModel.ssdl|res://*/MyAppModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=ndkkyxvogj.database.windows.net;initial catalog=DbName;persist security info=True;user id=myuserid;password=Pa$$word;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />

应用程序在本地计算机上运行没有任何问题。

在 Azure 上部署过程请执行以下步骤。

  • 在 Azure 上创建(自定义创建)网站并提供数据库凭据

  • 从 Azure 仪表板下载发布配置文件

  • 在 VS 中,单击从启动项目发布并设置以下参数:

  • ->配置文件:导入下载的配置文件
  • -> 连接:连接设置良好并验证
  • ->设置 :完全不确定这里等待什么!!我尝试了两种连接设置:使用建议的连接字符串和 EDMX 连接字符串。喜欢这个:

    metadata=res:///MyAppModel.csdl|res:///MyAppModel.ssdl|res://*/MyAppModel.msl;provider=System.Data.SqlClient;provider connection string="data source=ndkkyxvogj.database.windows.net;initial catalog=MyDb;persist security info=True;user id=databaseuser;password=Pa$$word;MultipleActiveResultSets=True;App=EntityFramework"

尝试评论 OnModelCreateating()。没用。还试图评论抛出 UnintentionalCodeFirstException()。也没用。

尽管对其他SO问答进行了研究,但无法找到任何可靠的解决方案。任何帮助将不胜感激。

Azure 网站部署抛出.在 DataBaseFirst 和 CodeFirst 之间产生误导

好的,

知道了...

实际上,落在那篇帖子和那篇帖子上,似乎在Azure Sql Server和Azure网站中给出相同的连接字符串名称之间具有误导性。

它与代码优先/模型优先或数据库优先之间的任何糟糕的 EF 实现无关......

所以我在 Web 应用配置、上下文类构造函数和 azure 网站连接字符串名称参数中为连接字符串名称提供了一个新的名称......它奏效了。

弄清楚这一点真的很痛苦...