由EF代码优先决定SQL Azure数据库版本和大小的因素?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了由EF代码优先决定SQL Azure数据库版本和大小的因素?相关的知识,希望对你有一定的参考价值。

我有一个POC解决方案,该解决方案使用ASP.NET MVC 3创建网站和用于数据访问的Entity Framework 4.3代码优先方法。我能够部署到Azure中的托管服务,并且基于连接字符串在SQL Azure中创建数据库。我不明白的是如何确定数据库版本(Web)和大小(1GB)。这只是默认值还是可控制的?

我可能打算通过在生产时将数据库初始化程序设置为null来实现此目的,并且无论如何都要自行进行管理,但是我想了解这些选项。谢谢

答案
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以获取更多详细信息。

另一答案

选项一:创建后,您可以更改Azure数据库的层]]

我讨厌这种解决方案,因为(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之前,您必须首先学习如何编写查询以及如何使用查询管理数据库!

选项三:创建自己的自定义EF初始化程序(重写内置类)

这是想要依靠实体框架之类的纯ORM解决方案的开发人员的最佳解决方案!

以下帖子中有一个很好的例子!https://blog.siliconvalve.com/2014/11/12/use-azure-management-api-sdk-in-an-entity-framework-custom-database-initializer/

选择解决方案

以上是关于由EF代码优先决定SQL Azure数据库版本和大小的因素?的主要内容,如果未能解决你的问题,请参考以下文章

EF - 代码优先 - SQL 默认值 getdate() 给出错误

ASP.NET EF5 代码优先不创建 SQL Server CE 数据库

Windows窗体应用程序中的连接字符串EF 4.1代码优先SQL紧凑

ASP.NET MVC EF 代码先部署 GoDaddy

(转)EF中数据优先,模型优先和代码优先

启用 EF 代码首次迁移后 Azure 网站出现内部服务器错误