Azure函数中实体框架的连接字符串 [英] Connection string for Entity Framework in an Azure Function
本文介绍了Azure函数中实体框架的连接字符串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在创建一个Azure函数,并添加了对使用实体框架的项目的引用。我已经从该项目复制了连接字符串,并粘贴到ConnectionStrings
对象内的local.settings.json
文件中作为有效的EF连接字符串。
metadata=res://*/xxx.csdl|res://*/xxx.ssdl|res://*/xxx.msl;
provider=System.Data.SqlClient;
provider connection string="e;
data source=xxx;
initial catalog=xxx;
user id=xxx;
password=xxx;
MultipleActiveResultSets=True;
App=EntityFramework
"e;
但它给了我一个例外:
不支持关键字:
metadata
。
如果我使用有效的SQL连接字符串(如下所示),
data source=xxx;
initial catalog=xxx;
user id=xxx;
password=xxx;
MultipleActiveResultSets=True;
App=EntityFramework
我有个例外:
在代码优先模式下使用上下文,其中的代码是从EDMX
文件生成的,用于数据库优先或模型优先开发。这将无法正常工作。若要解决此问题,请不要删除引发此异常的代码行。如果您希望使用数据库优先或模型优先,请确保实体框架连接字符串包含在启动项目的app.config
或web.config
中。如果您要创建自己的DbConnection
,请确保它是EntityConnection
而不是其他类型的DbConnection
,并将其传递给一个接受DbConnection
的基本DbContext
构造函数。要了解有关代码优先、数据库优先和模型优先的更多信息,请参阅此处的实体框架文档:http://go.microsoft.com/fwlink/?LinkId=394715
如何使用实体框架在Azure函数中创建到数据库的连接?我使用的是.NET框架,对于EF,我首先使用的是数据库。
我正在初始化数据库上下文,如下所示:
using (XxxDB db = new XxxDB())
{ }
同时,我已经为控制器XxxDB
public XxxDB(string connectionString): base(new EntityConnection(connectionString), true)
{ }
并在创建XxxDB
时传递SQL连接字符串,并收到以下错误:
不支持关键字:
data source
。
推荐答案
好吧,这是由EF模型第一个连接字符串的生成方式引起的。EF连接字符串生成器要求构造函数中有一个纯连接字符串。然后首先添加模型的元数据节。
在创建要传递给数据库上下文字符串生成器的新连接字符串时,请更改以下设置:
public XxxDB(string connectionString): base(new EntityConnection(connectionString), true)
{ }
至
public XxxDB(string connectionString): base(GetEntityConnection(connectionString), true)
{ }
private static string GetEntityConnection(string connectionString)
{
var efConnection = new EntityConnectionStringBuilder();
efConnection.ProviderConnectionString = connectionString;
// res://*/xxx.csdl|res://*/xxx.ssdl|res://*/xxx.msl
var model = "xxx";
// this is what's missing in your question
efConnection.Metadata = string.Format("res://*/Model.{0}.csdl|res://*/Model.{0}.ssdl|res://*/Model.{0}.msl", model);
return efConnection.ConnectionString;
}
这篇关于Azure函数中实体框架的连接字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文