首页 > 解决方案 > Azure函数使用实体框架但连接字符串不起作用

问题描述

我有一个使用处理实体框架的项目 dll 的 azure V1 函数。首先,我将连接字符串设置为

metadata=res://*/Dev.csdl|res://*/Dev.ssdl|res://*/Dev.msl;
provider=System.Data.SqlClient;
provider connection string='
data source={IP};initial catalog={DBName};
persist security info=True;
user id={User};password={PW};
MultipleActiveResultSets=True;
App=EntityFramework'

我得到了

不支持关键字:“元数据”。

然后我将连接字符串更改为

data source={IP};initial catalog={DBName};persist security info=True;user id={User};password={PW};

我得到了

上下文在 Code First 模式下使用,代码是从 EDMX 文件生成的,用于 Database First 或 Model First 开发。这将无法正常工作。要解决此问题,请不要删除引发此异常的代码行。如果您希望使用 Database First 或 Model First,请确保 Entity Framework 连接字符串包含在启动项目的 app.config 或 web.config 中。如果要创建自己的 DbConnection,请确保它是 EntityConnection 而不是其他类型的 DbConnection,并将其传递给采用 DbConnection 的基本 DbContext 构造函数之一。要了解有关 Code First、Database First 和 Model First 的更多信息,请参阅此处的实体框架文档:http: //go.microsoft.com/fwlink/ ?LinkId=394715

这是我的代码

        DevEntities db = new DevEntities();

        var lstAcAccount = db.AcAccounts.ToList();

        return req.CreateResponse(HttpStatusCode.OK, lstAcAccount);

DevEntities 来自使用上述连接字符串的其他 dll 项目。

那么,我应该怎么做才能完成这项工作?

标签: c#entity-frameworkazure

解决方案


您不应该使用生成的连接字符串,现在您的解决方案中包含所有元数据文件。而是尝试在 app.config 的连接字符串部分使用:

"data source=localhost\sqlexpress; initial catalog=sample; integrated security=True;MultipleActiveResultSets=True;"

如果是数据库优先:

打开.edmx[Diagram] -> right click -> "Update Model from database"

并查看是否会出现“ Add”、“ Refresh”和“ Delete”选项卡。

如果没有...可能您的连接已断开,并且 VS 创建一个新的连接字符串的对话框将会出现。

希望能帮助到你。


推荐阅读