При запросе SQL с EF6 из WebJob запрос не выполняется, потому что он пытается получить многовариантную версию таблицы - PullRequest
0 голосов
/ 05 октября 2019

Мой код выглядит так:

public static void DoSomething(TextWriter log)
        {
            log.WriteLine("Hey man! I'm running!");

            try
            {
                using (MyDBContext context = new MyDBContext())
                {
                    MemberMaster mm = context.MemberMaster.SingleOrDefault(m => m.MemberMasterId == 1);

                    if (mm != null)
                    {
                        log.WriteLine(string.Format("MemberMasterId = {0}, Username = {1}", mm.MemberMasterId, mm.UserName));
                    }
                    else
                    {
                        log.WriteLine("Could not find Member with MembermasterId = 1");
                    }
                }
            }
            catch (Exception ex)
            {
                log.WriteLine(ex.Message);
            }

            log.WriteLine("Done!");
        }

MyDBContext.cs выглядит следующим образом:

public class MyDBContext : DbContext
{
    public MyDBContext() : this("MyDb")
    {

    }

    public MyDBContext(string connectionName) : base(connectionName) { }

    public DbSet<MemberMaster> MemberMaster { get; set; }
} 

Я пытался добавить modelBuilder для удаления плюрализующих имен, но это просто приводит кв ошибке об изменении контекста БД .... сначала используйте код ... etc..etc ...

Есть ли лучший способ сделать это? WebJob развертывается через AZure с файлом .ZIP и находится в том же AppService, что и мой веб-сайт.

1 Ответ

0 голосов
/ 07 октября 2019

Я отключаю плюрализинг для множеств и таблиц, переопределяя OnModelCreating, чтобы оба имени были одинаковыми, и у меня не было проблем:

public class MyDBContext : DbContext
{
    static MyDBContext()
    {
        Database.SetInitializer<DbContext>(null);
    }

    public MyDBContext() : this("MyDb")
    {

    }

    public MyDBContext(string connectionName) : base(connectionName) { }

    public DbSet<MemberMaster> MemberMaster { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingEntitySetNameConvention>();
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();

        base.OnModelCreating(modelBuilder);
    }
} 
...