У меня есть контроллер, который обрабатывает эту страницу SmartController.cs
private readonly IProjectRepository _repository;
public SmartBuildController(IProjectRepository repository)
{
_repository = repository;
}
public IActionResult Index()
{
return View();
}
[HttpGet]
public IActionResult GetBarometric()
{
return Ok(_repository.GetAllBarometricPressure());
}
Далее у меня есть интерфейс в IProjectRepository.cs
public interface IProjectRepository
{
List<barometricpressure> GetAllBarometricPressure();
}
В моем ProjectRepository.cs вот код Это не срабатывает при изменении значения базы данных
public List<barometricpressure> GetAllBarometricPressure()
{
var barometricpressures = new List<barometricpressure>();
using(SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();
SqlDependency.Start(connectionString);
string cmdText = "select TOP (100)[name],[time],[sensor_number],[sensor_type],[value] from dbo.barometricpressure where time=1556484838716549045";
SqlCommand cmd = new SqlCommand(cmdText, conn);
SqlDependency dependency = new SqlDependency(cmd);
dependency.OnChange += new OnChangeEventHandler(dbChangeNotification);
if (conn.State == ConnectionState.Closed)
conn.Open();
var reader = cmd.ExecuteReader();
while (reader.Read())
{
var barometricpressureInfo = new barometricpressure
{
time = Convert.ToInt64(reader["time"]),
name = reader["name"].ToString(),
sensor_number = reader["sensor_number"].ToString(),
sensor_type = reader["sensor_type"].ToString(),
value = (float)Convert.ToDouble(reader["value"])
};
barometricpressures.Add(barometricpressureInfo);
}
}
return barometricpressures;
}
private void dbChangeNotification(object sender, SqlNotificationEventArgs e)
{
if (e.Type == SqlNotificationType.Change)
{
_context.Clients.All.SendAsync("refreshBarometric");
}
}
Внутри у меня также есть конструктор, который обрабатывает строку подключения и мой концентратор для веб-сокета. Я добавил services.AddSignalR () в мои ConfigureServices в startup.cs и направил app.UseSignalR в Configure для сопоставления моего хаба. Я не уверен, почему, когда я добавляю изменение в свою базу данных, код
dependency.OnChange += new OnChangeEventHandler(dbChangeNotification);
не срабатывает и не обнаруживает это изменение? Любая помощь будет оценена!