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

问题描述 投票:5回答:2

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

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

.net entity-framework-4 azure ef-code-first azure-sql-database
2个回答
1
投票
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以获取更多详细信息。


0
投票

选项一:创建后,您可以更改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/

选择解决方案😀

© www.soinside.com 2019 - 2024. All rights reserved.