以下是我在Azure门户中定义的连接字符串,用于DatabaseFirst方法:
metadata=res://*/mySuperModel.csdl|res://*/mySuperModelModel.ssdl|res://*/mySuperModel.msl;provider=System.Data.SqlClient;provider connection string="Data Source=tcp:myServerName.database.windows.net,1433;Initial Catalog=myDatabaseName;User ID=myUserName@myServerName;Password=myPasswordHere;"
请将您的连接方式与Azure门户中注意到连接类型为“自定义”进行比较。
User ID=myUserName@myServerName;
...一旦我添加了@myServerName部分,它就可以工作了。 - fujiiface"
替换为"
,转义引号在web.config中是显而易见的(因为xml),但在Azure app service上不能存在。 - undefined<add name="MYPROJECTENTITIES" connectionString="**metadata=**res://*/MODELS.MYPROJECTMODEL.csdl|res://*/MODELS.MYPROJECTMODEL.ssdl|res://*/MODELS.MYPROJECTMODEL.msl;provider=System.Data.SqlClient;provider connection string="Data Source=tcp:B6JD5K5EP4.database.windows.net,1433;Initial Catalog=MYPROJECT_DB;Integrated Security=False;User ID=MYPROJECT@B6JD5K5EP4;Password=MYPASSWORDABC123;**MultipleActiveResultSets=True**;Encrypt=True;TrustServerCertificate=False"" providerName="System.Data.EntityClient"/>
“UPPERCASE” 中的文本是我的 Azure 信息。显然,您需要使用自己的信息。
连接字符串的这部分让我噩梦连连,它也可能导致您的问题:
res://*/Models.MyProjectModel.csdl|res://*/Models.MyProjectModel.ssdl|res://*/Models.MyProjectModel.msl
那些参考资料必须完全正确。让我重复一遍:那些参考资料必须完全正确!!阅读2008年的这篇文章(“故障排除实体框架连接字符串”),我使用.NET Reflector查看了MyProjectModel.dll(我的.dll名称,可能与您的项目不同),就像他建议的那样,确实发现由实体框架自动生成的连接字符串是错误的。它没有包括前缀。当我添加了Models.前缀(这是我的.dll内部命名.csdl/.msl/.ssdl的方式,可能在您的项目中不同)时,一切都很好。查看您的.dll并查看名称是否匹配。如果不匹配,请更改为与.dll中显示的内容相匹配的名称。(如果我说的不够清楚,请阅读上面的文章。)