通过EF Core + Code First +迁移创建数据库

鼻窦

对于具有代码优先和迁移功能的Entity Framework Core应用程序,如果数据库不存在,则无法创建数据库。

我的第一个电话是:

using (MyDbContext context = new MyDbContext())
{
    context.Database.Migrate();
}

它运行覆盖的方法:

// 1
protected override void OnConfiguring(DbContextOptionsBuilder optionBuilder)
{
    optionBuilder.UseOracle($"ENLIST=dynamic;USER ID={UserId};POOLING=True;CONNECTION TIMEOUT=15;PASSWORD={Pwd};DATA SOURCE=localhost:1521/xe;CONNECTION LIFETIME=0");
}

// 2
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.HasDefaultSchema(UserId);
}

并抛出以下异常:

System.NotSupportedException:'所需的用户不存在或提供的用户名/密码无效'

我期望数据库和用户将在HasDefaultSchema调用中创建在这种情况下我想念什么?

罗伯托·埃尔南德斯

不幸的是,当模式不存在时,中的UseOracle方法optionBuilder不支持模式的创建。

原因是因为就Oracle而言,Sql Server或Postgres中的架构之间存在特定差异。

确保模式操作类

用于确保模式存在的MigrationOperation。也就是说,仅当模式不存在时才创建模式。

[System.Diagnostics.DebuggerDisplay("CREATE SCHEMA {Name}")]
public class EnsureSchemaOperation : 
Microsoft.EntityFrameworkCore.Migrations.Operations.MigrationOperation

该方法使用的语法create schema可以应用于某些数据库引擎,但不适用于Oracle。原因如下:

CREATE SCHEMA语句实际上并未在Oracle中创建架构。CREATE SCHEMA语句仅用于在单个SQL语句中的模式中创建对象(即表,视图),而不必发出单独的CREATE TABLE和CREATE VIEW语句。如果使用CREATE SCHEMA语句,则可以将它们作为一个单元进行控制。

Oracle模式类似于Windows OS中的“我的文档”文件夹。用户可以将权限授予其他用户以查看其架构中的内容,但是Oracle架构本质上是用户的工作区。

MS SQL Server的架构是名称空间。尽管您可以拥有“会计”和“市场营销”架构,但是它们并没有与各个用户紧密耦合。计费模式中的对象包含计费信息,而营销模式中的对象具有营销信息。

Oracle模式与用户紧密耦合,而MS SQL Server模式主要用于分类。

在Oracle中,模式始终是用户。您可以创建两个具有相同名称的不同表,这些表属于不同的用户/方案。在SQL Server中,架构和用户是分开的。用户仅用于登录和定义权限。

我相信Microsoft并未CREATE USER xxx在受影响的类的相应方法中实现。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

EF Code Frirst:在使用Code First迁移更新数据库之前,

来自分类Dev

使用Pomelo EF net-core 3.0,数据库创建迁移时出错:MySql

来自分类Dev

EF Code First回滚数据库表设计

来自分类Dev

WPF中的EF6 Code First在应用程序文件夹中创建本地数据库

来自分类Dev

您可以手动将表和对EF Core Code First中的SP /视图/功能的引用添加到现有数据库中吗?

来自分类Dev

当我通过EF Core更新数据库时,创建唯一索引重复键

来自分类Dev

使用 EF Core Code First 和 IdentityUser 的 .Net Core API

来自分类Dev

如何在EF Core Code First中自定义迁移生成?

来自分类Dev

EF Core 生成的迁移具有数据库品牌注释。寻找与数据库品牌无关的迁移

来自分类Dev

EF Code First 迁移 - 属性迁移

来自分类Dev

EF Code First迁移创建额外的外键

来自分类Dev

如何使用 Code First.Net Core 更新数据库

来自分类Dev

code first .net core publish 没有数据库表

来自分类Dev

使用EF Core自动创建数据库

来自分类Dev

使用重命名的数据库表进行 ASP.NET MVC Code First 数据迁移

来自分类Dev

EF Core Postgres更新数据库正在尝试创建已经存在的数据库

来自分类Dev

如何从数据库的EF Code First中配置现有db中的类之间的关系?

来自分类Dev

数据库'master'中的EF Code First CREATE DATABASE权限被拒绝

来自分类Dev

数据库迁移在EF Core中生成错误的表设计(使用AspNetUsers的多对多)

来自分类Dev

通过在App Store上更新实时版本将SQLite数据库迁移到Core Data

来自分类Dev

通过EF 6 / Code First键查找本地缓存的实体

来自分类Dev

SQLite内存数据库通过时态表测试EF Core应用程序

来自分类Dev

保持数据库同步 ef core

来自分类Dev

如何使用Entity Framework Code First和DDD创建数据库?

来自分类Dev

如何用密码保护使用Entity Framework Code First创建的数据库?

来自分类Dev

从EF Core 2.1升级到3.1后,无法在项目之间进行数据库迁移

来自分类Dev

在EF Code First迁移中使用自定义逻辑

来自分类Dev

EF Code First 中的消费视图与迁移冲突

来自分类Dev

EF通过在名称中添加guid创建数据库

Related 相关文章

  1. 1

    EF Code Frirst:在使用Code First迁移更新数据库之前,

  2. 2

    使用Pomelo EF net-core 3.0,数据库创建迁移时出错:MySql

  3. 3

    EF Code First回滚数据库表设计

  4. 4

    WPF中的EF6 Code First在应用程序文件夹中创建本地数据库

  5. 5

    您可以手动将表和对EF Core Code First中的SP /视图/功能的引用添加到现有数据库中吗?

  6. 6

    当我通过EF Core更新数据库时,创建唯一索引重复键

  7. 7

    使用 EF Core Code First 和 IdentityUser 的 .Net Core API

  8. 8

    如何在EF Core Code First中自定义迁移生成?

  9. 9

    EF Core 生成的迁移具有数据库品牌注释。寻找与数据库品牌无关的迁移

  10. 10

    EF Code First 迁移 - 属性迁移

  11. 11

    EF Code First迁移创建额外的外键

  12. 12

    如何使用 Code First.Net Core 更新数据库

  13. 13

    code first .net core publish 没有数据库表

  14. 14

    使用EF Core自动创建数据库

  15. 15

    使用重命名的数据库表进行 ASP.NET MVC Code First 数据迁移

  16. 16

    EF Core Postgres更新数据库正在尝试创建已经存在的数据库

  17. 17

    如何从数据库的EF Code First中配置现有db中的类之间的关系?

  18. 18

    数据库'master'中的EF Code First CREATE DATABASE权限被拒绝

  19. 19

    数据库迁移在EF Core中生成错误的表设计(使用AspNetUsers的多对多)

  20. 20

    通过在App Store上更新实时版本将SQLite数据库迁移到Core Data

  21. 21

    通过EF 6 / Code First键查找本地缓存的实体

  22. 22

    SQLite内存数据库通过时态表测试EF Core应用程序

  23. 23

    保持数据库同步 ef core

  24. 24

    如何使用Entity Framework Code First和DDD创建数据库?

  25. 25

    如何用密码保护使用Entity Framework Code First创建的数据库?

  26. 26

    从EF Core 2.1升级到3.1后,无法在项目之间进行数据库迁移

  27. 27

    在EF Code First迁移中使用自定义逻辑

  28. 28

    EF Code First 中的消费视图与迁移冲突

  29. 29

    EF通过在名称中添加guid创建数据库

热门标签

归档