SQL Server 2014内存优化表,包含实体框架6.1代码优先

时间:2014-04-12 08:08:54

标签: c# sql-server entity-framework ef-code-first

我的应用程序使用两个查找表,我想成为内存优化表。

似乎还没有属性要声明这个;

是否有可能挂钩表创建过程并查找自定义属性并修改create table命令?

我使用Entity Framework 6.1和Code First。

我寻求一种方法使其具有声明性,因此,例如EF 6.2或更新版本支持官方,我可以放弃我的黑客。

3 个答案:

答案 0 :(得分:5)

我将CreateTable替换为您要优化数据库的特定sql,在使用Sql进行向上迁移时调用("创建表等等。")。

这仅限于Sql Server 2014,并受到内存优化的其他要求的进一步限制。不值得尝试用EF中的属性来做这件事。

答案 1 :(得分:2)

也许您可以创建一个删除并重新创建表的Entity Framework DB初始化程序?

像(伪代码!):

    public class MyDbInitializer : CreateDatabaseIfNotExists<MyDbContext>
    {
        protected override void Seed(MyDbContext context)
        {
            context.Database.ExecuteSqlCommand("DROP TABLE MyTable");
            context.Database.ExecuteSqlCommand("CREATE TABLE MyTable (bla bla bla)  WITH (MEMORY_OPTIMIZED=ON)");
        }
    }

我无法测试此功能,因为我没有SQL 2014,但我在许多情况下使用Seed方法来改变我的数据库,所以它应该可以工作。

然后,您可以使用以下方式分配数据库初始化程序:

System.Data.Entity.Database.SetInitializer(new MyDbInitializer());

答案 2 :(得分:1)

老问题,但是FYI内存优化表在即将推出的Entity Framework Core 1.1中得到了一流的支持(预览1刚刚发布)。

相关问题