LoginSignup
1
1

More than 5 years have passed since last update.

【AzureFunctions】AzureFunctionsでEntitiyFrameworkを使うための接続文字列の書き方

Posted at

この記事の内容

FunctionsでADO.NETとEntityFrameworkを使いたかったけど調べてもなかなか出てこなかったので記事に残しておきます。

今回の方法以外にもADO.NETを使用しなければこういった方法の接続方法もありますので参考までに
Azure portal の Functions に書いたスクリプト

設定値

partialClass でEntitiesクラスに設定を追加します

Entities.cs
    [DbConfigurationType(typeof(MyDbContextConfig))]
    public partial class Entities : DbContext
    {
        public Entities(string connectionString) : base(connectionString)
        {
        }
    }

元の自動生成されたEntitiesクラスは

Entities.cs
        public Entities() : base("name=Entities")
        {
        }

となっている為引数を増やしオーバーロードします。

次にMyDbContextConfigクラスを作ります

MyDbContextConfig.cs

    public class MyDbContextConfig : DbConfiguration
    {
        public MyDbContextConfig()
        {
            SetProviderServices("System.Data.EntityClient",
            SqlProviderServices.Instance);
            SetDefaultConnectionFactory(new SqlConnectionFactory());
        }
    }

使い方

Main.cs
var connectionString = ConfigurationManager.ConnectionStrings["Entities"].ConnectionString;
using(var db = new Entities(connectionString))
{
    // dbの処理
    var userList = (from n in db.user_info select n).ToList();
}

Azureの設定

接続文字列をそのまま入れるだけでは動かないので少し書き方を変えてやる必要があります。

local.settings.json
"ConnectionStrings": {
  "Entities": "metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string='data source={server-name}.database.windows.net;initial catalog={db-name};persist security info=True;user id={username};password={password};MultipleActiveResultSets=True;App=EntityFramework'"
}

Azureのアプリケーション設定にも同様の値を入れておけば完了です。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1