实体框架核心 - 如何检查数据库是否存在?

Don*_*ato 13 entity-framework-core

对于EF6,我可以通过以下方式检查数据库是否存在:

context.Database.Exists()
Run Code Online (Sandbox Code Playgroud)

我怎么能在EF Core中这样做?

Don*_*ato 32

我自己找到了解决方案:

(context.GetService<IDatabaseCreator>() as RelationalDatabaseCreator).Exists()
Run Code Online (Sandbox Code Playgroud)

它适用于SqlServer的EF 7.0.0-rc1-final版本

更新:

实体框架核心2.0:

(context.Database.GetService<IDatabaseCreator>() as RelationalDatabaseCreator).Exists()
Run Code Online (Sandbox Code Playgroud)

  • 实体框架核心 2.0:`(context.Database.GetService&lt;IDatabaseCreator&gt;() as RelationalDatabaseCreator).Exists()` (9认同)
  • 对于 EF Core 2.0:不需要强制转换,只需使用 context.Database.GetService&lt;IRelationalDatabaseCreator&gt;() 代替 (4认同)
  • 我在使用 EF Core 3.1 时遇到了奇怪的问题。我需要在代码中手动添加“using Microsoft.EntityFrameworkCore.Infrastruct;”。Intellisense 没有告诉我需要做什么才能获得 `GetService()` 方法。 (2认同)

fli*_*lip 25

更新.Net 核心 3.1

要检查数据库是否存在并且可以联系:

dbContext.Database.CanConnect()
Run Code Online (Sandbox Code Playgroud)

  • 如果数据库不存在,则会抛出“SqlException”错误。 (3认同)
  • @RachaneeSaengkrajai 如果无法连接到 SQL 服务器,它会抛出异常。如果数据库不存在但服务器可访问,则仅返回 false。 (3认同)

归档时间:

查看次数:

8593 次

最近记录:

6 年,2 月 前