如何使用Entity Framework 6在运行时创建数据库和表?

时间:2016-08-09 14:13:52

标签: c# sql-server entity-framework entity-framework-6 asp.net-web-api2

我有一个使用Entity Framework 6的应用程序(数据库优先)。我的数据库已经存在,但我希望能够在新环境中运行我的应用程序并让代码创建数据库和表(如果它们尚不存在)。

如何在Entity Framework 6中实现这一目标?我见过使用DbContext.CreateDatabase()的旧示例,但该方法在EF6中不可用。对于它的价值,数据库在SQL Azure中。

编辑:有些人建议使用CreateDatabaseIfNotExists初始化策略,这可能是默认策略。不幸的是,我在尝试在尚未创建数据库的新环境中运行应用程序时收到错误。也许这是因为我正在使用Sql Azure?如果我手动创建数据库和表,则会解决该错误。这是错误消息:

  

抛出异常:' System.Data.SqlClient.SqlException'在   System.Data.dll中

     

其他信息:无法打开数据库" MyExampleDatabase"   登录请求。登录失败。

     

用户' ExampleUser'。

的登录失败

请注意,该异常似乎是身份验证失败,但事实并非如此。我验证了凭据和连接字符串是有效的。应用程序运行正常,并在我创建数据库和数据库之后能够更新数据库。手动表。但我希望应用程序能够在运行时自动创建数据库和表(如果它们尚不存在)。

2 个答案:

答案 0 :(得分:0)

确保获得所需内容的最佳方法是从初始化开始创建。

为了创建数据库,我将使用Azure REST API或(如果可以)使用Microsoft.Azure.Management.Sql NuGet包。使用此API创建数据库允许您指定所需的性能级别,这决定了价格。

对于初始化,您可以像往常一样使用EF

答案 1 :(得分:0)

感谢您的反馈。我能够通过使用“Code First from database”选项(在Visual Studio 2015中)重新创建我的ADO.NET实体模型来解决问题。以前,我使用了“EF designer from database”选项。显然,我需要选择“代码优先”才能利用EF的这一功能。