这已被问过几次,但我无法让任何建议对我有用。
我有一个网站和SQL数据库,我在本地构建,现在已部署到Azure中。数据库是网站的链接资源。我能够浏览网站,甚至可以使用ADO.Net和标准连接字符串连接并运行对数据库的查询。
问题是,当我尝试使用Entity Framework进行连接时,我不断支持关键字:'元数据'。我删除了多个活动记录集并尝试替换“with”但它没有工作。我完全坚持想法。
答案 0 :(得分:22)
这是我在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;"
与您的比较和请注意,天蓝色门户网站中的连接类型为“自定义”。
答案 1 :(得分:2)
我遇到与OP相同的问题,但他的解决方案对我不起作用。
这是一个连接字符串问题,但没有引号。
由于我花了两天时间才解决,也许这会帮助其他人:
在Azure上托管时, [用于我的ASP.NET MVC 4.5 / Entity Framework 5.0应用程序的连接字符串(我在本地针对SQL Server 2012开发,但将数据库迁移到Azure SQL数据库)(使用{{ 3}}))。我首先使用数据库来创建我的.edmx文件(我从数据库生成(数据)模型)] 是:
<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
这些引用必须完全正确。让我再说一遍:那些引用必须完全正确!!
在阅读SQL Database Migration Wizard(“实体框架连接字符串疑难解答”)后,我使用.NET Reflector查看MyProjectModel.dll(我的.dll的名称(可能与您的项目不同),如他所建议的那样) ,果然,连接字符串(由Entity Framework自动为我生成!)是错误的。它没有包含前缀。一旦我添加了模型。前缀(这是怎么回事.csdl / .msl / .ssdl在我的.dll中命名(可能与你的不同)),一切都很好。看看你的.dll内部是否匹配。如果没有,改变它们以匹配什么出现在.dll中。(如果我说的不够清楚,请阅读上面的文章。)