实体框架设置了Autogrowth和Maxsize

时间:2015-11-30 16:42:58

标签: sql-server entity-framework dbcontext

在SQL Server上创建数据库时,有没有办法告诉EF什么用于Autogrowth和Maxsize?

Default values

2 个答案:

答案 0 :(得分:0)

其实我觉得你不能。你也可以看看这里,以确保
https://entityframework.codeplex.com/SourceControl/latest#src/EntityFramework.SqlServer/SqlProviderServices.cs
并且在被调用的函数上(但它只运行"创建数据库"最终指定mdf和ldf文件名)。

最好的办法是在标准迁移之前创建运行直接查询的数据库。

修改
数据库创建实际上并不是自动化的,或者更好,您可以决定何时创建它(并编写迁移,如何创建) 实际上我认为你正在使用自动迁移(你没有编写任何迁移代码) 如果数据库不存在并且创建了表来检查__MigrationHistory表,则会创建数据库(这非常重要,因为您可以在不更新EF元数据的情况下创建数据库)。 它发生在第一次访问EF之前(首先访问EF读取映射,检查数据库是否正常然后执行您请求的查询)或者您可以强制它。
实际上我认为,如果参数错误,则确定是否需要运行创建数据库(您可以检查它是否存在)比运行alter database更简单。

您的代码可以:
1.从App / Web配置中读取连接字符串 2.连接到master而不是指定的数据库
3.检查数据库是否存在(从sysdatabases中选择count(*),其中name = ...)
4.如果它不存在则创建它

然后,您可以继续使用正常代码(EF将找到数据库,以便迁移将避免创建它。)

答案 1 :(得分:0)

启用迁移,但不启用自动迁移。 See this to learn about migrations

创建第一次迁移。这会创建Up()Down()方法。您可以在上一份文档的Customizing migrations section中查看如何自定义它。

在up方法中,您可以使用Sql("Your sql command")运行ALTER DATABASE commands以将增长设置为最大大小数据库配置。