Dependencia de Sql con EntityFramework 6 (async)
Estoy usando el EF 6async
características de consulta, tales como
var list = await cx.Clients.Where(c => c.FirstName.Length > 0).ToListAsync();
También quiero iniciar las dependencias de SQL en estas consultas para que pueda recibir una notificación cuando los datos en la base de datos cambien. Puedo hacer esto usando elSystem.Runtime.Remoting.Messaging.CallContext
como sigue:
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();
}
}
.. y funciona bien. Pero me estoy topando con un problema si quiero tener unSqlDependency
en más de una consulta. Si tengo dosasync
métodos similares aGetData()
arriba, y ejecuto ambos al mismo tiempo, solo el primero recibirá notificaciones de cambio. Supongo que esto se debe a que CallContext tiene la cookie establecida por cada método en sucesión. Si espero la primeraasync
método para completar, luego llame al segundo, ambos reciben notificaciones de cambio como se esperaba. Hay alguna solución para esto?