SQL Server + CLR + EF 4 + CF: возможно ли включить CLR и развернуть ячейки CLR по коду? - PullRequest
0 голосов
/ 21 февраля 2012

Я использую SQL Server 2012 RC0 + EF 4 + MVC 4. 90% моей базы данных сделано с функциональностью Code First для EF.

Я собираюсь использовать некоторые функции CLR для регулярных выражений, так какописано здесь и другие статьи.

Как я уже говорил, я использую EF Code First, поэтому я использую эту функциональность, создавая db при первом использовании и выполняя некоторые дополнительные команды SQL для созданияиндексация, ограничения, вычисляемые поля SQL и функции SQL.

Это пример моей функции Seed при первом использовании:

public class mydbInitializer : DropCreateDatabaseIfModelChanges<TManagerContext>
   {
    protected override void Seed(mydbContext context)
    {
        try
        {
            context.Database.ExecuteSqlCommand("CREATE NONCLUSTERED INDEX IX_index1 ON table1 (field1)");
            context.Database.ExecuteSqlCommand("CREATE NONCLUSTERED INDEX IX_index2 ON table1 (field2)");
            ...

// здесь я бы поместил некоторый код для включения CLR на SQL Server и развернул в нем свои функции CLR ....

Я бы развернул свое приложение на другом сервере, поэтому мне было интересно, можно ли включить CLR и развернуть функции CLR при первом использовании приложения? Из соображений безопасности, затемЯ бы пошел, чтобы заменить корзины на версии, которые не включают создание или отбросить БД.

Как вы думаете, это неправильный подход?Нужно ли мне обязательно использовать SQL Management Studio?Кроме того, вы можете создать пакет для облегчения интеграции CLR и его лотков?

Большое спасибо за вашу помощь и извините за мой плохой английский.С наилучшими пожеланиями

1 Ответ

3 голосов
/ 21 февраля 2012

Да, это возможно. Включение SQLCLR можно выполнить с помощью команды sp_configure:

exec sp_configure 'clr_enabled', 1;
reconfigure;

Чтобы загрузить сборку в базу данных прямо из кода, используйте CREATE ASSEMBLY <name> FROM @bits; и в качестве @bits передайте поток DLL сборки. Вы можете добавить сборку SQLCLR в свое приложение как ресурс или как зависимость, и обе позволяют получить поток в DLL сборки и передать его в качестве аргумента SqlBytes для @ bits.

...