首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EF5数据库迁移:如何启用FILESTREAMS

EF5数据库迁移:如何启用FILESTREAMS
EN

Stack Overflow用户
提问于 2013-11-18 18:52:23
回答 1查看 937关注 0票数 2

我现在正在开发一个应用程序,我们需要在SQL服务器上添加一个迁移到启用FILESTREAM。我的Up()方法如下所示:

代码语言:javascript
复制
public override void Up()
    {
        //Enable filestream
        Sql("USE master " +
            "Go " +
            "EXEC sp_configure 'show advanced options' " +
            "GO " +
            "EXEC sp_configure filestream_access_level, 1 " +
            "GO " +
            "RECONFIGURE WITH OVERRIDE " +
            "GO");
        //Need to add some script here to create FILEGROUP and add a file to that
        //file group to be used by FILESTREAM
        CreateTable(
            "dbo.PatientAttachmentEntities",
            c => new
                {
                    Id = c.Guid(nullable: false),
                    PatientMedicalDataId = c.Guid(nullable: false),
                    FileName = c.String(nullable: false),
                    FileDescription = c.String(),
                })
            .PrimaryKey(t => t.Id)
            .ForeignKey("dbo.PatientMedicalDataEntities", t => t.PatientMedicalDataId, cascadeDelete: true)
            .ForeignKey("dbo.AttachmentContentEntities", t => t.Id)
            .Index(t => t.PatientMedicalDataId)
            .Index(t => t.Id);

   //CreateTable(
   //         "dbo.AttachmentContentEntities",
   //         c => new
   //             {
   //                 Id = c.Guid(nullable: false),
   //                 //Need to know if the following line is ok to setup a FILESTREAM column
   //                 Content = c.Binary(storeType:"varbinary(max) FILESTREAM", nullable:true),
   //             })
   //         .PrimaryKey(t => t.Id);
   Sql("CREATE TABLE [dbo].[AttachmentContentEntities]( " +
       "[Id] [uniqueidentifier] ROWGUIDCOL NOT NULL PRIMARY KEY, " +
       "[Content] [varbinary](max) FILESTREAM  NOT NULL ) " +
       "ON [PRIMARY] FILESTREAM_ON [MEDIC_FS]");
     }

我需要一些sql脚本来向该组添加一个文件组和一个文件(该文件必须位于与我的数据库文件相同的路径上),而且我还需要知道我已经添加的脚本是否正常,以及我在c.Binary方法上的类型是否正常。

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-29 23:49:17

我终于有了解决这个问题的解决方案,我认为没有办法使用脚本在windows级别启用filestream,但是可以使用这段代码实现配置的其余部分。希望能对外面的人有所帮助。

代码语言:javascript
复制
public override void Up()
{
    //File Stream
        Sql("USE master " +
            "EXEC sp_configure 'show advanced options' " +
            "EXEC sp_configure filestream_access_level, 1 " +
            "RECONFIGURE WITH OVERRIDE " +
            "ALTER DATABASE Medic " +
            "ADD FILEGROUP MEDIC_FS " +
            "CONTAINS FILESTREAM " +
            "DECLARE @db_path NVARCHAR(MAX) " +
            "SELECT @db_path = physical_name FROM sys.master_files WHERE database_id = DB_ID(N'Medic') AND type_desc = 'ROWS' " +
            @"SET @db_path = REVERSE(RIGHT(REVERSE(@db_path),(LEN(@db_path)-CHARINDEX('\', REVERSE(@db_path),1))+1)) + 'MEDIC_FS' " +
            "DECLARE @Sql NVARCHAR(MAX) " +
            "SET @Sql = 'ALTER DATABASE Medic ADD FILE ( NAME= ''Medic_FS'', FILENAME = ' + QuoteName(@db_path,'''') + ' ) TO FILEGROUP MEDIC_FS' " +
            "EXEC( @Sql ) ", suppressTransaction: true);        
    CreateTable(
        "dbo.PatientAttachmentEntities",
        c => new
            {
                Id = c.Guid(nullable: false),
                PatientMedicalDataId = c.Guid(nullable: false),
                FileName = c.String(nullable: false),
                FileDescription = c.String(),
            })
        .PrimaryKey(t => t.Id)
        .ForeignKey("dbo.PatientMedicalDataEntities", t => t.PatientMedicalDataId, cascadeDelete: true)
        .ForeignKey("dbo.AttachmentContentEntities", t => t.Id)
        .Index(t => t.PatientMedicalDataId)
        .Index(t => t.Id);

  Sql("CREATE TABLE [dbo].[AttachmentContentEntities]( " +
   "[Id] [uniqueidentifier] ROWGUIDCOL NOT NULL PRIMARY KEY, " +
   "[Content] [varbinary](max) FILESTREAM  NOT NULL ) " +
   "ON [PRIMARY] FILESTREAM_ON [MEDIC_FS]");
 }

这对我来说还行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20055527

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档