Azure FunctionsでTimeTriggerを使うことになり、Entity FrameworkをASP.NETのサービス外から使う方法につまずいたので接続方法とインスタンスの生成方法について。
まず一発目の
public static void Run([TimerTrigger("0 */5 * * * *")]TimerInfo myTimer, ILogger log)
このTimerTriggerの後ろにある数字がcron式と同じだって話なんですけど数違うんですよね。
とりあえず*/5は5分毎みたいなので2桁目が分なのは確実。なので1桁目は秒かなって思ってるんですが正解はわかりません。
で本題のインスタンス生成方法
DbContextInheritancerはDbContextを継承したクラスです。
ContextEntityはモデルです。
# Npgsqlを使うにはnugetでNpgsqlとNpgsql.EntityFrameworkCore.PostgreSQLのインストールが必用です。
using Microsoft.EntityFrameworkCore; // 省略 public static void Run([TimerTrigger("0 */5 * * * *")]TimerInfo myTimer, ILogger log) { var builder = new DbContextOptionsBuilder<DbContextInheritancer>(); builder.UseNpgsql(connectionString, builder => builder.EnableRetryOnFailure(5, TimeSpan.FromSeconds(10), null)); DbContextInheritancer context = new DbContextInheritancer(); var ret = context.Set<ContextEntity>().FirstOrDefault(); }
って感じでretにDBの値が正しく取得できたのでイケてる感じがします。
コメント