У меня есть проект, который использует EF4 на стороне клиента, чтобы поговорить с SQL Server db. В этой БД есть группа SP, которые выполняют операции над записями и возвращают подмножества записей. Ничего особенного, о самом интенсивном бите, генерирует несколько байтов случайных данных и переписывает часть байтового массива с ним. Записи должны оставаться на сервере по соображениям безопасности, потому что массив данных сродни закрытому ключу.Как использовать EF4 в SQLCLR (SQL Server 2012)?
В прошлом я использовал ADO для доступа к БД в SP, но это кажется ужасно устаревшим и неуклюжим по сравнению с EF4. И теперь, когда я обновил SQL Server 2012 с .NET4, доступным для SQLCLR, я хотел бы сделать следующий SP с использованием EF4 и перейти к использованию этого в будущем.
Проблема в том, что никто, кажется, еще не сделал этого, и я не уверен, что это возможно.
Я знаю, что могу это сделать, написав отдельное приложение на стороне сервера и поговорив с БД от моего имени, но это означает, что стороне клиента необходимо подключение как к базе данных, так и к вспомогательной службе. Больше вещей, чтобы работать, больше вещей, чтобы пойти не так, и эстетически неприятно.
Я создал простую сборку, которая использует EF4 для доступа к нескольким стандартным таблицам. Дополнительные ссылки не добавлены. При импорте в SQL Server я получаю ошибки, которые не могут найти «System.Data.Entity» и «System.Runtime.Serialization». Хорошо, я копирую их в один каталог и снова импортирую. Я получаю пару предупреждений, что я на неизведанной территории, что отлично подходит для экспериментов. Но потом я получаю недостающую сборку «smdiagnostics». И я не могу найти какой-либо файл на диске с «smdiagnostics» в названии, полный текстовый поиск по проекту для этого термина не дает хитов, и я не нашел многого в другом месте, что помогло мне отследить, где это может быть найденным.
Так кто-нибудь знает, как я могу удовлетворить или удалить требование для smdiagnostics?