2015-02-13 3 views
1

Я пробовал искать существующий вопрос, подобный этому, но не смог его найти.SignalR Hub прослушивает дополнения Entity Framework

В принципе, я хочу внедрить Feed Feed в своем веб-приложении с помощью SignalR, так как я не хочу постоянно опроса веб-службы, если мне это не нужно. Это кажется мне довольно простым.

Я планирую иметь таблицу ActivityFeedItems, которая содержит эти события. Я думаю, что каждый раз, когда что-то добавляется в эту таблицу, я вытаскиваю уведомление всем клиентам концентратора SignalR, и клиент будет заполнять канал.

Мой вопрос в том, есть ли способ прослушать EntityFramework, добавив объект этого типа? В противном случае мне придется опросить таблицу, чтобы узнать, были ли какие-либо новые записи с момента последнего раза. Хотя это определенно выполнимо, учитывая масштаб нашего приложения, я бы предпочел вообще не опросить.

Спасибо!

+1

Посмотрите на [Как выполнить бизнес-логики при сохранении изменений] (https://msdn.microsoft.com/en-us/library/vstudio/cc716714 (v = VS.100) .aspx) на MSDN. Похоже, это может быть хорошим местом для этого. – mason

+0

Спасибо. Если вы опубликуете это как ответ, я буду рад отметить его как правильное. Это похоже на то, что мне нужно. –

ответ

1

Вы можете переопределить метод SaveChanges() для вашего DbContext, как описано в How to: Execute Business Logic When Saving Changes на MSDN.

public override int SaveChanges(SaveOptions options) 
{ 
    //perform logic here 
    return base.SaveChanges(options); 
} 
+0

Для этого потребуется экземпляр Singleton DbContext? Я не планировал иметь только один доступный DbContext, поэтому я не знаю, будет ли это работать сейчас, когда я думаю об этом. –

+0

@ Kith Я не думаю, что это должен быть синглтон. Должно работать нормально, если у вас несколько экземпляров вашего контекста. Просто убедитесь, что в реализации 'SaveChanges()' вы только передаете, если объект был изменен или изменен. – mason

Смежные вопросы