2012-02-21 4 views
0

SQL Server 2012 RC0 + EF 4 + MVC 4を使用しています。データベースの90%はEFのコードファースト機能で作成されています。SQL Server + CLR + EF 4 + CF:CLRを有効にして、CLRビンをコードごとに展開できますか?

正規表現には、hereなどの記事に記載されているように、いくつかのCLR関数を使用します。

EF Code Firstを使用していますので、最初に使用するときにdbを作成し、インデックス作成、制約、SQL計算フィールド、SQL関数を作成するためのSQLコマンドを実行します。

これは最初の使用上の私の種子funcionの例である:

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)"); 
      ... 

//ここで私はSQL Server上でCLRを有効にして、そこに私のCLR機能を展開するいくつかのコードを入れてしまうでしょう....

アプリを別のサーバーにデプロイするので、アプリケーションを初めて使用するときにCLRを有効にしてCLR機能をデプロイすることが可能かどうか疑問に思っていましたか?安全上の理由から、私はビンの作成やドロップを伴わないバージョンでビンを交換するつもりです。

あなたはそれが間違ったアプローチだと思いますか? SQL Management Studioを使用する必要がありますか?あるいは、バッチを作成してCLRとそのビンの統合を容易にすることができますか?

私の悪い英語を助けてくれてありがとうございました。 最高のお礼

答えて

2

はい、可能です。 SQLCLRを可能にするsp_configureを実行することによって行うことができる。

exec sp_configure 'clr_enabled', 1; 
reconfigure; 

ストレートコード使用CREATE ASSEMBLY <name> FROM @bits;からと@bitsは、アセンブリDLLストリームに通過するようにデータベースにアセンブリをロードします。 SQLCLRアセンブリをリソースまたは依存関係としてアプリケーションに追加することができます。両方とも、アセンブリDLLへのストリームを取得し、これを@bitの引数SqlBytesとして渡すことができます。

+0

ありがとうございました。申し訳ありませんが私の無知、私は初心者です。 'exec'コマンドをコードでどのように渡すべきですか?もっと具体的な例を挙げてください。 THXあなたの助けに! – Larry

+0

また、リソースとして渡すと、DLLはサーバーに転送されますか? THX – Larry

+0

THXレムス。私はあなたが示唆した通りにそれを行いました。また、インポートされたdllファイルをdb内にインポートしたかどうかを確認するために削除しましたが、まだ動作しています。ご協力ありがとうございました! – Larry

関連する問題