7

这已被问过几次,但我无法让任何建议对我有用。

我有一个在本地构建的网站和 SQL 数据库,现在已部署到 Azure。该数据库是网站的链接资源。我可以浏览网站,甚至可以使用 ADO.Net 和标准连接字符串连接并运行对数据库的查询。

问题是当我尝试使用实体框架连接时,我不断收到不支持的关键字:'元数据'。我已经删除了多个活动记录集并尝试用 ' 替换“但它没有用。我完全陷入了想法。

4

2 回答 2

26

这是我在 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 门户中为“自定义”。

于 2012-12-17T15:05:31.580 回答
2

我和 OP 有同样的问题,但他的解决方案对我不起作用。

这是一个连接字符串问题,但不是引号。

由于我花了两天时间解决,也许这对其他人有帮助:

在 Azure 上托管时适用于我的 ASP.NET MVC 4.5/Entity Framework 5.0 应用程序的连接字符串(我在本地针对 SQL Server 2012 进行开发,但将数据库迁移到 Azure SQL 数据库(使用SQL 数据库迁移向导))。我首先使用数据库来创建我的 .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=&quot;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&quot;" providerName="System.Data.EntityClient"/>

大写的文本是我的 Azure 信息。显然,您需要使用自己的。

连接字符串的这一部分给了我噩梦,它也可能导致您的问题:

res://*/Models.MyProjectModel.csdl|res://*/Models.MyProjectModel.ssdl|res://*/Models.MyProjectModel.msl

这些引用必须完全正确。让我重复一遍:那些参考必须完全正确!

在阅读了 2008 年的这篇文章(“实体框架连接字符串疑难解答”)之后,我使用 .NET Reflector 来查看 MyProjectModel.dll(我的 .dll 的名称(在您的项目中可能不同),就像他建议的那样,果然,连接字符串(由实体框架为我自动生成!)是错误的。它不包含前缀。只要我添加了Models.prefix(这就是 .csdl/.msl/.ssdl 的命名方式在我的 .dll 中(可能与您的不同),一切正常。查看您的 .dll 内部,看看名称是否匹配。如果不匹配,请更改它们以匹配 .dll 中出现的内容。(阅读上面的文章如果我说的不够清楚。)

于 2012-12-29T04:21:10.850 回答