2013-09-27 1 views
0

У меня есть проект, который использует 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?

ответ

0

Ах. Бит «док». Копирование отдельных сборок в тот же каталог, что и моя собственная библиотека DLL, - это не то, что нужно сделать, а просто реакция коленного рефлекса на то, что сообщение об ошибке не было найдено даже после поиска в том же каталоге.

Предполагая, что использование 32-битного сервера, выбрав свой собственный дБ и уже настроенный на достоверность, регистрирует все необходимое для добавления проекта EF4;

CREATE ASSEMBLY [System.Data.Entity] 
from 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.Data.Entity.dll' 
with permission_set = UNSAFE; 
Смежные вопросы