我的应用程序使用两个查找表,我想成为内存优化表。
似乎还没有属性要声明这个;
是否有可能挂钩表创建过程并查找自定义属性并修改create table命令?
我使用Entity Framework 6.1和Code First。
我寻求一种方法使其具有声明性,因此,例如EF 6.2或更新版本支持官方,我可以放弃我的黑客。
答案 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刚刚发布)。