Я могу воспроизвести вашу проблему с помощью следующего запроса LINQPad к Northwind:
Employees.Where(e => e.EmployeeID == -999).Sum(e => e.EmployeeID)
Здесь есть две проблемы:
Sum()
перегружен В SQL SUM(no rows)
возвращает null
, а не ноль. Однако вывод типа для вашего запроса дает вам decimal
в качестве параметра типа вместо decimal?
. Исправление состоит в том, чтобы помочь выводу типа выбрать правильный тип, то есть :
Employees.Where(e => e.EmployeeID == -999).Sum(e => (int?)e.EmployeeID)
Теперь будет использоваться корректная перегрузка Sum()
.
(Извините за перекрестную публикацию, но этот ответ, который я дал на аналогичный вопрос, здесь отлично работает)
Я создал небольшую прокладку object.watch для этого некоторое время назад. Он работает в IE8, Safari, Chrome, Firefox, Opera и т. Д.
Этот плагин просто использует таймер / интервал для многократной проверки изменений объекта. Может быть, достаточно хорошо, но лично я хотел бы больше непосредственности как наблюдатель.
Вот попытка перенести watch
/ unwatch
в IE: http: //webreflection.blogspot .com / 2009/01 / internet-explorer-object-watch.html .
Он действительно меняет синтаксис способа добавления наблюдателей в Firefox. Вместо:
var obj = {foo:'bar'};
obj.watch('foo', fooChanged);
Вы делаете:
var obj = {foo:'bar'};
var watcher = createWatcher(obj);
watcher.watch('foo', fooChanged);
Не так мило, но как наблюдатель вы немедленно получаете уведомление.