SQL Server 2014内存优化表,实体框架6.1代码优先
本文关键字:框架 代码 实体 2014 Server 内存 优化 SQL | 更新日期: 2023-09-27 17:58:04
我的应用程序使用了两个查找表,我想成为内存优化表。
似乎还没有属性来声明这一点;
是否有可能挂接到表创建过程中,查找自定义属性并修改创建表命令?
我使用实体框架6.1和代码优先。
我想办法让它成为声明性的,所以如果EF 6.2或更新版本支持它,我可以放弃我的破解
我会将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刚刚发布)中具有一流的支持。