我有一个POC解决方案,它使用ASP.NET MVC 3创建一个网站,并使用Entity Framework 4.3 Code First方法进行数据访问。我能够部署到Azure中的托管服务,我的数据库基于我的连接字符串在SQL Azure中创建。我不明白的是如何确定数据库版本(Web)和大小(1GB)。这只是默认值还是可控制的?
我可能计划通过在进入生产时将我的数据库初始化程序设置为null并且无论如何都要管理它来解决这个问题,但我想了解这些选项。感谢
答案 0 :(得分:1)
您可以在CREATE DATABASE
来电中指定版本和最大尺寸。如果省略了edition和maxsize参数,则默认为Web,1GB。完整的CREATE DATABASE
电话是:
CREATE DATABASE database_name [ COLLATE collation_name ]
{
(<edition_options> [, ...n])
}
<edition_options> ::=
{
(MAXSIZE = {1 | 5 | 10 | 20 | 30 … 150} GB)
|(EDITION = {'web' | 'business'})
}
有关详细信息,请参阅this MSDN reference page。
答案 1 :(得分:0)
您可以使用以下一种常见解决方案:
我讨厌这种解决方案,因为(1)您总是会不时地忘记这样做。 (2)这意味着在创建数据库之后必须等待更多时间才能开始工作。 (3)如果您不能依靠ORM,并且需要自己管理数据库,那么这是什么意思?!
如果您确实想使用EF之类的ORM,在大多数情况下,这是我的首选。同样,缺点是您自己管理数据库,并且需要知道编写查询,而不仅仅是使用ORM。
您可以使用实体框架方法“ SqlCommand.ExecuteNonQuery”在应用程序中执行此操作。实际上,这是必须知道的方法。
专家可以通过自己编写直接查询来绕过ORM不良解决方案的能力,从而将EF用于复杂系统。这意味着“将EF与纯查询和数据库管理相结合”。
例如:
var Query2CreateDB = $"CREATE DATABASE RonenArielyDB2(EDITION = 'Basic', SERVICE_OBJECTIVE = 'Basic',MAXSIZE = 100 MB);";
ExecuteNonQuery(connectionString, Query2CreateDB, commandTimeout: 600);
这就是为什么在使用Entity Framework或任何其他ORM之前必须首先学习如何编写查询和使用查询管理数据库的原因!
对于那些希望依靠实体框架之类的纯ORM解决方案的开发人员来说,这是最佳解决方案!
以下帖子中有一个很好的例子! https://blog.siliconvalve.com/2014/11/12/use-azure-management-api-sdk-in-an-entity-framework-custom-database-initializer/
选择解决方案?