我遇到了这个试图在Azure上部署MVC网站的“可怕”错误消息:
使用数据库优先和模型的T4模板生成的代码 如果在Code First模式下使用,则第一次开发可能无法正常工作。 要继续使用Database First或Model First,请确保实体 框架连接字符串在配置文件中指定 执行申请。要使用这些类,请从中生成 数据库优先或模型优先,使用代码优先添加任何其他 然后使用属性或DbModelBuilder API进行配置 删除抛出此异常的代码。
从头开始使用DataBase First Workflow(添加 ADO.Net实体数据模型元素,然后连接到Azure SQL Server数据库的wizzard)。所以我无法弄清楚为什么它会让Code First陷入困境。使用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项目和StartUp项目Web配置中复制:
<add name="MyAppEntities" connectionString="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=DbName;persist security info=True;user id=myuserid;password=Pa$$word;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
App在本地计算机上运行没有任何问题。
在Azure上部署流程遵循以下步骤。
在Azure上创建(自定义创建)网站并提供数据库凭据
从Azure仪表板下载发布配置文件
在VS中,单击“从启动项目发布”并设置以下参数:
- &GT;设置:根本不确定在这里等待什么!!! 我尝试了两种连接设置:使用建议的连接字符串和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”
< / LI>尝试评论OnModelCreating()。没工作。 还尝试评论抛出UnintentionalCodeFirstException()。也没用。
尽管研究了其他SO Q&amp; A,找不到任何可靠的解决方案。任何帮助将不胜感激。