SqlDependency с EntityFramework 6 (асинхронный)

Я использую EF 6async запрашивая функции, такие как

var list = await cx.Clients.Where(c => c.FirstName.Length > 0).ToListAsync();

Я хочу также запустить зависимости SQL от этих запросов, чтобы получать уведомления при изменении данных в базе данных. Я могу сделать это с помощьюSystem.Runtime.Remoting.Messaging.CallContext следующее:

    async Task GetData()
    {
        using (ClientsContext context = new ClientsContext()) // subclass of DbContext
        {

            SqlDependency.Start(context.Database.Connection.ConnectionString);
            SqlDependency dependency = new SqlDependency();
            dependency.OnChange += (sender, e) =>
                {
                    Console.Write(e.ToString()); 
                };

            System.Runtime.Remoting.Messaging.CallContext.SetData("MS.SqlDependencyCookie", dependency.Id);
            var list = await context.Clients.Where(c => c.FirstName.Length > 0).ToListAsync();
        }
    }

.. и работает нормально. Но я сталкиваюсь с проблемой, если я хочу иметьSqlDependency на более чем один запрос. Если у меня есть дваasync методы, похожие наGetData() выше, и я запускаю оба одновременно, только первое получит уведомления об изменениях. Я предполагаю, что это связано с тем, что CallContext имеет cookie, установленный каждым методом подряд. Если я жду первогоasync завершите метод, затем вызовите второй, они оба получат уведомления об изменениях, как и ожидалось. Есть ли какое-то решение этого?

Ответы на вопрос(1)

Ваш ответ на вопрос