问题标签 [entity-framework-core-migrations]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
20892 浏览

stored-procedures - EF Core 2.0 如何使用 SQL 存储过程

我是使用存储过程的 EF Core 2.0 的新手。

谁能帮助如何在我的 EF Core 2.0 代码优先方法中使用存储过程?

在我之前的项目中,我有一个.edmx模型文件,我使用的上下文如下:

上下文是:

谢谢

0 投票
1 回答
466 浏览

.net - 如何向 EF Core SqlServer 目标构建器添加对结构化注释的支持?

HasAnnotation使用接受参数类型的方法向 EF 模型添加纯字符串注释很容易object,但是尝试添加结构化注释会在构建迁移时出错:

我们是否有办法target builder将有助于序列化结构化注释的方法注入?

为什么我会需要它?只是试图在一个地方收集所有数据库元数据。而元通常是结构化信息。

0 投票
3 回答
3881 浏览

asp.net-mvc - EF Core 中的 SQL Server 排序规则

如何使用注解或 Fluent API 指定列、表或数据库的排序规则?我知道 MySql Provider 有一些干净的方法。但是,除了执行原始 SQL 命令之外,我找不到任何用于 SQL Server 的方法。

0 投票
1 回答
2605 浏览

c# - Entity Framework Core fluent api一对多和一对一产生重复的外键

我正在将我的 ASP.NET MVC 项目更改为带有 Entity Framework Core 和 Fluent API 的 ASP.NET Core MVC。当我尝试配置一对一和一对多关系时,它会在依赖表中生成重复的外键列。

例如:我在上下文的OnModelCreating方法中有这个:

会话模型是这样的:

课程模型是这样的:

而不是在迁移中恢复:

我明白了:

因此,即使我提出.IsRequired();了关系,该关系似乎也是可选的,并且CourseId1在表格中添加了一个可选的。

该应用程序是在 Mac OSX 上使用 Visual Studio for Mac 开发的。

我已经配置了这么久,我只找到了 Entity Framework 而不是 Entity Framework Core 的东西。他们两个的配置方式不同。有人能帮助我吗?

谢谢你。

0 投票
1 回答
1451 浏览

asp.net-core - Entity Framework Core 无法添加迁移

执行dotnet ef add migration InitialMigration给出此错误的命令A suitable constructor for type 'Vega.Repository.VegaContext' could not be located. Ensure the type is concrete and services are registered for all parameters of a public constructor.

ConfigureServices在 Startup 类上的方法如下:

VegaContext类是:

部分csproj文件是:

0 投票
1 回答
7005 浏览

docker - Docker 容器中的 EF Core 迁移

我正在.NET Core 2.0 中设置 WebApi。我将使用 Entity Framework Core 作为 ORM。整个应用程序将部署为 Docker 容器。让我有点不安的是在这种情况下处理数据库迁移的方式。我的意思是生产环境。这是我设法研究的内容:

  • 我们只是在应用程序中触发 Database.Migrate() 开始忘记整个世界-嗯我不喜欢它;-)
  • Database.Migrate() 由命令行参数驱动(使用指定参数运行一次 docker 容器以迁移数据库)
  • 登录应用程序容器并执行dotnet ef database update
  • 基于迁移生成普通的旧 SQL 并从数据库管理工具执行它。看起来老派但有效。我讨厌自己乱执行脚本。
  • 准备一个数据库容器,该容器已经具有从上面的代码生成的脚本,并且会自动执行它们。

还有其他建议吗?或者什么是最好、最合适的解决方案?

问候

0 投票
0 回答
738 浏览

mysql - EF 核心:跨上下文时间戳

我有一个 EF Core 测试项目,我正在测试 MySql 和 Sql 服务器上下文。我有以下财产:

根据https://docs.microsoft.com/en-us/ef/core/modeling/concurrency

对于 SQL Server,时间戳通常用于 byte[] 属性,该属性将设置为数据库中的 ROWVERSION 列

但是,对于 MySql,我需要使用 DataTime,否则在尝试保存新记录时会出错。在 SQL Server 中,如果我使用 迁移DateTime,它不会将 Timestamp 分配为默认值。也就是说,每次我创建一个新记录时,它都会显示一个错误,指出该CreatedOn列不能为空。

我正在使用Pomelo.EntityFrameworkCore.MySqlfor MySql。我尝试多个上下文的原因是模拟开发过程中更改数据库等情况。

有没有办法设置两者都通用的时间戳?如果不是普通属性,阴影属性也可以。

0 投票
4 回答
4323 浏览

visual-studio-2017 - ef核心迁移不能使用秘密管理器

当我创建 .net 核心 Web 应用程序时,我在测试期间使用秘密管理器。我通常能够创建一个新的 web 项目(mvc 和 web api),右键单击该项目并选择“管理用户机密”。这将打开一个 json 文件,我在其中添加秘密。然后我在我的 startup.cs 中使用它,如下所示:

该网站可以正常工作,并且可以很好地连接到数据库。但是,当我尝试使用诸如 ef 核心迁移命令时add-migration,它们似乎无法从秘密管理器访问连接字符串。我收到错误消息“连接字符串不能为空”。当我Configuration["connectionString"]使用实际字符串进行硬编码时,错误消失了。我已经在线检查并检查了 .csproj 文件,它们已经包含以下几行:

然后:

我需要添加什么以便迁移可以访问连接字符串吗?

更新

我在上下文类中只有一个构造函数:

0 投票
1 回答
1894 浏览

c# - Code First Entity Framework with ASP.NET Core:初始迁移似乎期望表已经存在

我正在尝试在 Visual Studio Code 中创建 Code First Entity Framework ASP.NET Core 2 项目。我一直在关注在 Linux、macOS 和 Windows 上使用 ASP.NET Core MVC 和 Visual Studio Code 创建 Web API教程,该教程使用内存数据存储作为其DbContext. 我正在尝试将其移至 LocalDB。

使用新数据库的 ASP.NET Core 上的 EF Core 入门教程建议我应该能够通过迁移来做到这一点。

一旦有了模型,就可以使用迁移来创建数据库。

打开 PMC:

工具 -> NuGet 包管理器 -> 包管理器控制台

运行 Add-Migration InitialCreate 来构建迁移,为您的模型创建初始表集。如果您收到一条错误消息,指出“添加迁移”一词未被识别为 cmdlet 的名称,请关闭并重新打开 Visual Studio。

运行 Update-Database 以将新迁移应用到数据库。此命令在应用迁移之前创建数据库。

使用包管理器控制台的 VS 代码等效项似乎是

dotnet ef migrations add InitialCreate

添加了 EF 的 Design 命名空间...

并在我的 csproj 中有参考:

但是当我之后尝试该dotnet ef migrations add命令时,它的作用就像我的 TodoItems 模型的表需要已经存在于数据库中。我的理解是迁移将根据我的模型创建表。

需要做些什么来确保根据我的模型创建表?

我能想到的唯一问题是我将连接字符串内联而不是在 appsettings.json 中,但我不确定为什么这很重要,除非迁移正在寻找默认配置。

Fwiw,这些是我对 TodoApi 教程的代码所做的唯一更改,以从内存数据库移动到 LocalDB。


更新: Fwiw,我尝试更改连接字符串中的数据库名称..

(更改ContactsContacts2,以防万一它认为,因为它最初找到了联系人数据库,所以迁移已经发生了......)

这也不起作用,尽管错误以一种表明连接字符串正在工作并被读取的方式发生了变化。

0 投票
1 回答
3150 浏览

entity-framework-core - 使用迁移时如何指定产品版本?

以下是有关[dbo].[__EFMigrationsHistory]表格外观的快速示例:

EF 迁移表

有没有办法ProductVersion在应用迁移时指定?