问题标签 [ef-core-2.0]

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 投票
1 回答
2634 浏览

c# - 升级到 EF Core 2.0:System.InvalidOperationException:无法将属性“Id”配置为“ValueGeneratedOnUpdate”

我正在将 Asp.Net Core 1.1 应用程序升级到 Asp.Net Core 2.0。

我在所有 Entity Framework 2.0 查询中都遇到了一个常见错误:

此错误是通过以下查询获得的:

主题实体如下:

其配置如下:

在项目启动中,我有以下内容:

我尝试了不同的查询和实体,但我不断收到此错误。

我错过了什么?

0 投票
1 回答
74 浏览

c# - 我必须使用哪一个,MyDbContext.Blogs.Add(ablog) 还是 MyDbContext.Add(ablog)?

考虑我有 EFCore 2.0 的上下文MyDbContext继承DbContextBlogs是一个DbSet<Blog>并且Blog是一个实体模型。

当我向 中添加一个新Blog实例时,ablogBlogs必须使用哪一个?

MyDbContext.Add(ablog);还是MyDbContext.Blogs.Add(ablog);

怎么样Find

MyDbContext.Find<Blog>(1);还是MyDbContext.Blogs.Find(1);

使用一个比另一个有什么好处吗?

0 投票
1 回答
2052 浏览

entity-framework - ef core 2.0 脚手架-dbcontext 自定义命名空间

我正在使用 ef core 2.0 CLI 命令scaffold-dbcontext 从现有数据库(首先是数据库)对 poco 类进行逆向工程。我想将脚手架 dbcontext 中生成的类放在我的项目中的“模型”文件夹中,但我希望类的命名空间与“MyProjectName.Model”不同。例如,我希望脚手架-dbcontext 生成的文件位于模型文件夹中,但我希望生成的文件的命名空间为“MyProjectName.Entities”。

有没有办法使用scaffold-dbcontext cli 命令控制生成的命名空间?

(给你一点背景知识,我想在生成的 pocos 中定义自定义命名空间,这样我就可以在另一个文件夹中拥有一组单独的部分类,这些类不会被使用脚手架 dbcontext 重新生成模型覆盖)。

0 投票
2 回答
425 浏览

c# - 使用 Fluent Api 的零或一对一关系 EF Core

如果我有模型:

当我在下面运行测试时,它显示该帐户已从用户中删除,但未从数据库中删除

我试图创建一个 UserEntityTypeConfiguration 来在可选字段上设置级联删除,但我似乎无法让它适用于可选字段。

任何人都可以帮忙吗?

0 投票
1 回答
2533 浏览

c# - 如何将两个类映射到 EF Core 中的一个表

我可以映射到一个看起来像这样的表吗?

在映射之后, 1 将映射到:

加载 2 会导致

任何人都可以帮忙吗?

0 投票
4 回答
11742 浏览

entity-framework - EF Core 2.0 scaffold-dbcontext 在另一个项目中查找ConnectionString

我正在使用 EF Core 2.0 CLI 命令scaffold-dbcontext从现有数据库(首先是数据库)对 poco 类进行逆向工程。包含我的带有ConnectionString的 appsettings.json 文件的项目与包含由 scaffold-dbcontext 生成的 poco 类的项目不同。

如何获取支架-dbcontext 命令以在另一个项目的 appsettings.json 文件中找到 ConnectionString?

0 投票
2 回答
7249 浏览

c# - EF Core 2.0 TransactionScope 错误

我正在尝试在 EntityFramework Core 2.0 的 SELECT 查询中使用 TransactionScope。但是我收到此错误:“不支持在环境事务中登记。”

这个想法是在我选择查询时实现“NO LOCK”选项(我知道拥有该选项不是一个好主意,但这是供应商的要求)。所以我添加了一个扩展方法(带有 NOLOCK 的实体框架

而且我已经设置忽略环境事务警告。

我的存储库中有如下查询

我了解 .Net Core 2.0 支持 TransactionScope。但我不确定为什么会收到此异常。

知道为什么会这样吗?

0 投票
1 回答
127 浏览

asp.net-core - 当我尝试播种时,使用 asp.net core 和 ef core 出错了

我的 startup.cs 是

我的种子课程是:

当我Update-Database在 Nuget 包管理中时:

在类“程序”上调用方法“BuildWebHost”时发生错误。在没有应用程序服务提供商的情况下继续。错误:无法从根提供程序解析范围服务“Blog.DAL.Context.BlogDbContext”。

无法创建“BlogDbContext”类型的对象。将“IDesignTimeDbContextFactory”的实现添加到项目中,或查看https://go.microsoft.com/fwlink/?linkid=851728了解设计时支持的其他模式。

0 投票
2 回答
4470 浏览

asp.net-core - 如何在 EF Core 2.0 中运行 `dotnet ef` 命令以针对特定的 appsettings.[environment].json

文档提到 2.0 中不支持传入自定义环境变量,但 EF 核心 1.0 支持 --environment 参数。我有点觉得 EF Core 2.0 应该仍然支持这个特性。

目前,我正在将多个应用程序部署到同一台机器上,但同一台机器上的版本不同。我正在使用 Puppet 来自动化一些部署过程,并最终在 IIS 中创建网站,例如Company.Project.[env]. .dev、.test、.uat 之类的东西在哪里env运行,每个都在单独的 AppPool 等下运行。现在,使用 ASP.NET Core 2.0,我可以environmentVariable为每个部署的 aspnet 核心网站和环境变量应用一个 < > 到 web.configweb.config优先于ASPNETCORE_ENVIRONMENT. 在 puppet 部署期间,它会在 web.config 中为 ASPNETCORE_ENVIRONMENT 变量插入正确的值,这对我来说非常有意义,并且允许每个部署的应用程序仍然可以正确引导并加载到正确的appsettings.[environment].json文件中。

现在,使用 EF Core 2.0,我无法做到这一点。我计划为每个环境部署一个单独的数据库项目,并为每个部署的包添加环境名称后缀,就像我在网站上所做的那样,并计划以某种方式传入 --environment 以运行任何dotnet ef命令并让它们读取正确的appsettings.[environment].json文件将具有正确的目标数据库环境连接字符串来运行迁移。

如果 ASPNET Core 网站支持 < environmentVariable> ,则web.config允许将多个项目部署到使用唯一环境变量的同一台机器上。然后我觉得EF Core应该支持传入--environment。

由于这不再受支持,那么在同一台机器上多次部署应用程序但同时运行dotnet ef命令以针对特定 appsettings.[environment].json 以确保 ef 命令在部署项目,然后在该机器上的正确数据库上运行迁移。

0 投票
1 回答
584 浏览

asp.net - 在 EF Core 2.0 中过滤相关表

我正在.Net Core 2.0 中进行我的第一个项目。这是一个简单的博客系统。我想添加基于帖子标题和标签的搜索功能。我的实体:

到目前为止,我已经想出了类似的东西。我加入了标签表,以便能够在 IndexView 中查看每个帖子的所有标签。

这很麻烦,但我想知道是否有更简单或更好的方法。当我不包含相关表格时,.Where 函数会起作用吗?