C# 远程服务器(Azure)上的意外CodeFirstException

C# 远程服务器(Azure)上的意外CodeFirstException,c#,entity-framework,connection-string,web.config-transform,C#,Entity Framework,Connection String,Web.config Transform,我建立了一个网站,它在本地运行得非常好。然后我尝试部署到Azure。所有不使用数据库的东西都可以正常工作,但当我尝试访问数据库时,我得到: System.Data.Entity.Infrastructure.UnintentionalCodeFirstException: Code generated using the T4 templates for Database First and Model First development may not work correctly if us

我建立了一个网站,它在本地运行得非常好。然后我尝试部署到Azure。所有不使用数据库的东西都可以正常工作,但当我尝试访问数据库时,我得到:

System.Data.Entity.Infrastructure.UnintentionalCodeFirstException:
Code generated using the T4 templates for Database First and Model First
development may not work correctly if used in Code First mode...

   at MySite.Infrastructure.DatabaseContainer.OnModelCreating(DbModelBuilder modelBuilder)
   at System.Data.Entity.Internal.LazyInternalContext.CreateModelBuilder()
   at System.Data.Entity.Internal.LazyInternalContext.CreateModel(LazyInternalContext internalContext)
   at System.Data.Entity.Internal.RetryLazy`2.GetValue(TInput input)
   at System.Data.Entity.Internal.LazyInternalContext.InitializeContext()
   at System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType)
   at System.Data.Entity.Internal.Linq.InternalSet`1.Initialize()
   at System.Data.Entity.Internal.Linq.InternalSet`1.get_InternalContext()
   at System.Data.Entity.Internal.Linq.InternalSet`1.ActOnSet(Action action, EntityState newState, Object entity, String methodName)
   at System.Data.Entity.Internal.Linq.InternalSet`1.Add(Object entity)
   at System.Data.Entity.DbSet`1.Add(TEntity entity)
   at MySite.Services.ServiceBase`1.Add(T o)
   at MySite.Controllers.SomeController.New(SomeObject objectParam)
我的本地连接字符串是

<add name="DatabaseContainer" connectionString="metadata=res://MySite.Data/Database.csdl|res://MySite.Data/Database.ssdl|res://MySite.Data/Database.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.\sqlexpress;initial catalog=MyDatabase;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
<add name="DatabaseContainer" connectionString="metadata=res://MySite.Data/Database.csdl|res://MySite.Data/Database.ssdl|res://MySite.Data/Database.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=serverstuff.from.azure;Initial Catalog=MyDatabase;User Id=MyUser;Password=MyPassword;App=EntityFramework&quot;" providerName="System.Data.EntityClient"
  xdt:Transform="SetAttributes" xdt:Locator="Match(name)"
/>
MySite.Services.ServiceBase`1.Add(to)只是

我检查了Azure,创建了数据库,并且有一个表“SomeObject”

我不理解它试图在ModelCreating上执行
的原因。在本地,它工作得很好


这可能是什么原因造成的?

刚刚发现我在Azure面板上有一个同名的
连接字符串
,它覆盖了我在
Web.Config中的配置
我在
WebJob
上遇到了这个问题。问题是连接字符串名称与应用程序设置中my
WebApp
的一个连接字符串相同

因此,我在Azure中的
WebApp
应用程序设置中设置了以下内容:

DatabaseContainer <connectionString>
必须在my
WebJob
中将连接字符串名称更改为其他名称,因为它使用my
WebApp
的连接字符串,因为名称重叠


因此,我将
DatabaseContainer
更改为
DatabaseContainerJob

数据库是azure dashboard中网站的
链接资源吗?@dav1dsm1th是。我在
链接资源
选项卡中看到它。当数据库没有链接到
资源时,我在连接数据库时遇到问题。你看到你的网站连接成功(或失败)了吗?哦,我只是想问一下问题。这种事经常发生。哈哈,感谢@dav1dsm1tht的帮助,他们应该会让人们注意到仪表板中连接字符串的重要性,因为它们覆盖了
web.config
。随着Azure变得越来越流行,这个问题将不断出现。
db.SomeObjects.Add(o);
db.SaveChanges();
DatabaseContainer <connectionString>
<add name="DatabaseContainer" connectionString="metadata=res://*/TMSModel.csdl|res://*/TMSModel.ssdl|res://*/TMSModel.msl;provider=System.Data.SqlClient;provider connection string=myconnectionstring;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />