Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >用EF Core + Code First +迁移创建数据库

用EF Core + Code First +迁移创建数据库
EN

Stack Overflow用户
提问于 2020-08-13 07:28:51
回答 3查看 1.6K关注 0票数 2

对于带有代码优先和迁移的实体框架核心应用程序,如果数据库不存在,我就无法创建它。

我的第一个电话是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
using (MyDbContext context = new MyDbContext())
{
    context.Database.Migrate();
}

它运行重写的方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 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调用中创建。我在这个案子里漏掉了什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-08-21 05:47:17

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

原因是,对于Oracle,Server或Postgres中的模式之间存在着特定的差异。

EnsureSchemaOperation类

用于确保架构存在的MigrationOperation。也就是说,架构将被创建当且仅当它还不存在。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[System.Diagnostics.DebuggerDisplay("CREATE SCHEMA {Name}")]
public class EnsureSchemaOperation : 
Microsoft.EntityFrameworkCore.Migrations.Operations.MigrationOperation

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

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

Oracle架构与Windows操作系统中的“我的文档”文件夹类似。用户可以向其他用户授予查看其架构中的内容的权限,但Oracle架构实际上是用户的工作区。

MS的架构是命名空间。虽然您可以拥有会计和市场营销模式,但它们并不是与单个用户紧密耦合的。会计模式中的对象包含会计信息,营销模式中的对象具有营销信息。

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

在Oracle中,架构始终是用户。您可以创建两个同名的不同表,它们属于不同的用户/架构。在Server中,架构和用户是分开的。用户只用于登录和定义权限。

我相信微软没有在受影响类的相应方法中实现CREATE USER xxx

票数 4
EN

Stack Overflow用户

发布于 2020-08-17 08:45:18

您是否检查过迁移是否包括模式的创建?

根据我的经验,一些数据库连接器默认情况下包括模式的自动创建,有些则不包括,例如mysql和ms做的,但是MariaDB的相同代码需要在前面创建模式。

票数 1
EN

Stack Overflow用户

发布于 2020-08-23 20:58:46

提供的用户名和密码似乎有问题。请交叉检查用户名和密码与您正在使用的oracle实例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63398380

复制
相关文章
EF Code First 学习笔记:关系
项目中最常用到的就是一对多关系了。Code First对一对多关系也有着很好的支持。很多情况下我们都不需要特意的去配置,Code First就能通过一些引用属性、导航属性等检测到模型之间的关系,自动为我们生成外键。观察下面的类:
跟着阿笨一起玩NET
2018/09/19
7600
EF Code First 学习笔记:关系
(转载)EF 使用code first模式创建数据库和 填充种子数据
第一篇:来自 .net 开发菜鸟 博主的文章:https://www.cnblogs.com/dotnet261010/p/8035213.html
CherishTheYouth
2019/09/11
8460
EF 数据库连接约定(Connection String Conventions in Code First)
一个典型的EF应用大多数情况下是一个DbContext的派生类(derived class)来控制,通常可以使用该派生类调用DbContext的构造函数,来控制以下的东西: (1)、上下文如何连接到数据库(给定连接字符串) (2)、上下文是通过Code First语法计算模型还是使用EF 设计器 (3)、额外的高级选项 下面是DbContext构造器的常用的用途: 一、DbContext无参构造函数 如果当前EF应用中没有做任何的配置.且在你自定义的数据库上下文类中没有调用DbContext带参的构造函数,
郑小超.
2018/01/26
1.5K0
WPF 运行时迁移 EF Core 数据库
在客户端开发,可以使用 .NET Core 3.0 开发 WPF 程序,可以使用 EF Core 连接数据库。客户端的数据库使用 SQLite 在不同的版本需要在客户端运行做数据库迁移升级数据库
林德熙
2022/08/04
6430
WCF Data Services 5.0 和 EF 4.3 Code First
WCF Data Services 5.0已经在4月9日发布,支持OData V3版本的协议。之前版本的WCF Data Services是随.NET FX 4.0发布的,这次是单独提供了安装包下载。这个版本有几个特性很不错,具体参看文章 http://blogs.msdn.com/b/writingdata_services/archive/2012/04/09/my-favorite-things-in-odata-v3-and-wcf-data-services-5-0.aspx。 新特性主要用于支持
张善友
2018/01/29
8860
WPF 运行时迁移 EF Core 数据库
在客户端开发,可以使用 .NET Core 3.0 开发 WPF 程序,可以使用 EF Core 连接数据库。客户端的数据库使用 SQLite 在不同的版本需要在客户端运行做数据库迁移升级数据库
林德熙
2019/10/09
1.3K0
.net core ef core 自动迁移,自动修改数据库
不过数据库model有改动的话需要先执行下 add-migrate xxx 命令,然后每次运行程序GetPendingMigrations()就会检测有无更新,有的话自动迁移。
跟着阿笨一起玩NET
2020/10/09
2.3K1
EF Core 3.1 入门视频-02 创建数据库
http://mpvideo.qpic.cn/0b7854aacaaay4ajzgdojvpvb36dahxqaaia.f10002.mp4?dis_k=8a3835d77347ec6cd69f594
宿春磊Charles
2022/03/29
3550
dotnet core 使用 ef 迁移常见问题
执行命令dotnet ef migrations add lindexi.github.io显示下面代码
林德熙
2020/03/22
1.3K0
VS2010+EF Code First 4.1学习MVC3(三)
htmlHelper 和UrlHelper 类,这是我们在View层进行页面显示组件的常用类或者是唯一类,但是我们又对它了解哪些呢?我们了解为什么可以使用htmlHelper类?因为使用了扩展方法,我们自己是否可以正确的定义一些helper类来满足我们自己的业务需求,对于扩展方法我们又理解多少?htmlHelper类中的那几个方法我们是否完全的掌握?
Isaac Zhang
2019/09/10
4620
VS2010+EF Code First 4.1学习MVC3(三)
在.NET Core类库中使用EF Core迁移数据库到SQL Server
前言 如果大家刚使用EntityFramework Core作为ORM框架的话,想必都会遇到数据库迁移的一些问题。 起初我是在ASP.NET Core的Web项目中进行的,但后来发现放在此处并不是很合理,一些关于数据库的迁移,比如新增表,字段,修改字段类型等等,不应该和最上层的Web项目所关联,数据的迁移文件放到这里也感觉有点多余,有点乱乱的感觉,所以才想着单独出来由专门的项目进行管理会比较好,也比较清晰! 注意目标框架选择的是.NET Core 2.0而不是.NET Standard 2.0。 0、前期准
企鹅号小编
2018/01/25
1.7K0
VS2010+EF Code First 4.1学习MVC3(二)
在MVC中,Area使我们的业务逻辑更加清晰,为我们后期的维护带来了极大的便利,那么今天我就来啃啃这一块的东西,可以很方便的替代UrlRouting的一些功能哦~~
Isaac Zhang
2019/09/10
4450
VS2010+EF Code First 4.1学习MVC3(二)
VS2010+EF Code First 4.1学习MVC3(一)
这里的环境只有VS2010,EF CF4.1,继续加入Jquery EasyUI,做一个用户列表(选中,编辑,删除,新增)
Isaac Zhang
2019/09/10
5020
VS2010+EF Code First 4.1学习MVC3(一)
EF Core 迁移过程遇到EF Core tools version版本不相符的解决方案
The EF Core tools version '2.1.1-rtm-30846' is older than that of the runtime '2.1.4-rtm-31024'
跟着阿笨一起玩NET
2020/03/06
1.2K0
EF Core使用CodeFirst在MySql中创建新数据库以及已有的Mysql数据库如何使用DB First生成域模型
官方教程:https://docs.microsoft.com/en-us/aspnet/core/data/?view=aspnetcore-2.1 使用EF CodeFirst在MySql中创建新
Ryan_OVO
2023/10/19
4650
浅谈 EF CORE 迁移和实例化的几种方式
出于学习和测试的简单需要,使用 Console 来作为 EF CORE 的承载程序是最合适不过的。今天笔者就将平时的几种使用方式总结成文,以供参考,同时也是给本人一个温故知新的机会。因为没有一个完整的脉络,所以也只是想起什么写点什么,不通顺的地方还请多多谅解。 本文对象数据库默认为 VS 自带的 LocalDB 1. Normal & Simple 先介绍一种最简单的构建方式,人人都会。 新建 Console 应用程序,命名自定 安装相关Nuget 包 //Sql Server Database Pr
潘成涛
2018/01/18
1.1K0
关于EF Code First模式不同建模方式对建表产生的影响
今天在学EF Code First模式的时候,发现几个很有趣的问题,问题如下: 1、当编写玩实体后,不指定任何主键约束,EF会找长的最像Id的,然后设置其为主键,验证代码如下: //User类 class User { public Guid UserId { get; set; } public string Name { get; set; } } class CodeFirstContext:DbContext {
郑小超.
2018/01/26
9880
浅谈 EF CORE 迁移和实例化的几种方式
出于学习和测试的简单需要,使用 Console 来作为 EF CORE 的承载程序是最合适不过的。今天笔者就将平时的几种使用方式总结成文,以供参考,同时也是给本人一个温故知新的机会。因为没有一个完整的脉络,所以也只是想起什么写点什么,不通顺的地方还请多多谅解。 本文对象数据库默认为 VS 自带的 LocalDB 1. Normal & Simple 先介绍一种最简单的构建方式,人人都会。 新建 Console 应用程序,命名自定 安装相关Nuget 包 //Sql Server Database Pr
潘成涛
2018/07/09
8660
01-EF Core笔记之创建模型
使用EF Core的第一步是创建数据模型,模型建的好,下班走的早。EF Core本身已经设置了一系列约定来帮我们快速的创建模型,例如表名、主键字段等,毕竟约定大于配置嘛。如果你想改变默认值,很简单,EF Core提供了Fluent API或Data Annotations两种方式允许我们定制数据模型。
拓荒者IT
2019/09/23
3.1K0
EF Core索引
索引是跨多个数据存储区的常见概念。 尽管它们在数据存储中的实现可能会有所不同,但也可用于基于列(或一组列)更高效地进行查找。
跟着阿笨一起玩NET
2020/11/10
1.6K0

相似问题

EF Code First迁移错误

14

EF Code First 4.3:迁移/种子

10

EF Code First -缓存迁移数据?

10

EF Code First迁移-不检测更改

21

EF Code First迁移突然停止应用

14
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文