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

本文关键字:框架 代码 实体 2014 Server 内存 优化 SQL | 更新日期: 2023-09-27 17:58:04

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

似乎还没有属性来声明这一点;

是否有可能挂接到表创建过程中,查找自定义属性并修改创建表命令?

我使用实体框架6.1和代码优先。

我想办法让它成为声明性的,所以如果EF 6.2或更新版本支持它,我可以放弃我的破解

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

我会将CreateTable替换为您想要优化数据库的特定sql,该sql在Up迁移中使用sql调用("create table etc.")。

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

也许您可以创建一个实体框架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());

老问题,但FYI内存优化表在即将发布的Entity Framework Core 1.1(preview1刚刚发布)中具有一流的支持。