我正在使用SQL Server 2012 RC0 + EF 4 + MVC 4.我的数据库的90%是使用EF的Code First功能。
我将使用一些CLR函数用于正则表达式,如here和其他文章所述。
正如我所说的,我正在使用EF Code First,所以我利用这个功能,在首次使用时创建db并执行一些额外的SQL命令来制作索引,约束,SQL计算字段和SQL函数。
这是我第一次使用种子功能的一个例子:
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功能?出于安全原因,我会去使用不涉及创建的版本替换bin或删除db。
你认为这是一种错误的做法吗?我是否需要使用SQL Management Studio?或者,您可以创建批处理以便于集成CLR及其容器吗?
非常感谢你的帮助,抱歉我的英语不好。 最诚挚的问候
答案 0 :(得分:3)
是的,有可能。启用SQLCLR可以通过运行sp_configure
:
exec sp_configure 'clr_enabled', 1;
reconfigure;
直接从代码使用CREATE ASSEMBLY <name> FROM @bits;
将程序集加载到数据库中,就像@bits在程序集DLL流中传递一样。您可以将SQLCLR程序集作为资源或依赖项添加到应用程序,它们都允许您检索到程序集DLL的流并将其作为@bits的SqlBytes
参数传递。