问题标签 [ef-core-2.2]

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 投票
0 回答
165 浏览

castle-dynamicproxy - 如何在 EF CORE 中获取未代理的对象

对于每个 EF 版本,都有不同的方式来获取代理的底层对象。使用 EF 核心 2.2 时,所有旧技巧都不起作用。我引用了 EF 使用的 Castle.Core 并调用了 ProxyUtil.GetUnproxiedInstance ,但这只是再次返回代理,如下文所述。那里的建议都不起作用。笔记 !我需要实例,而不是我可以通过 BaseType 轻松获得的类型。

没有工作解决方案的类似问题

0 投票
2 回答
390 浏览

c# - Why does EF Core throws "Database already exists"?

My start-up conditions:

  1. I have an application on .Net Core using EF Core (both 2.2);
  2. I have an existing database on local SQLServer;
  3. I use built-in DI to supply my DbContext: services.AddDbContext<MyDbContext>(options => options.UseSqlServer(connectionString));
  4. I use Fluent API to configure my context (empty method to start with) and DbContextOptions<MyDbContext> options constructor;
  5. I have several migrations from other projects existing in Database and no existing in my current project.

Using all of mentioned I perform (dotenet ef migrations add Initial --project ../MyDALProject) on an empty model to get an empty Initial Migration. That works fine. Then I run dotenet ef database update --project ../MyDALProject to apply this Empty Migration to the database. Nevertheless, I get "Database 'TargetDatabase' already exists. Choose a different database name".

BTW.: other projects work with the same Db just as fine.

What can be the problem? How to make it works?

P.S.: other projects' contextes, I have mentioned, are been scaffolded and mapped to some existing tables. After scaffold, migrations and updates work as expected. The problem relys only to this project, which will bring new tables to an existing db.

0 投票
1 回答
207 浏览

c# - Entity Framework Core:通用模型配置

在 EF Core 中配置我的模型映射时,我想设置一些通用映射规则,例如。告诉每个具有Id属性的类,该属性被映射到 DB 列ID

使用实体框架,我能够使用以下代码实现这一点:

IEntity<long>是一个只有一个属性的简单接口long Id { get; set; }。我模型中的每个实体类都简单地实现了这个接口。)

Entity Framework Core 2.2+也有类似的可能吗?

0 投票
1 回答
34 浏览

sql-server - EFCore:根据相关实体中某个字段的最大值查询相关实体

我需要根据相关实体中某个字段的最大值查询相关实体,然后显示该项目的结果。

例如,模型定义为:

在剃须刀控制器中:

在剃刀视图中:

在 Max 语句之后,我无法查询其他字段。我尝试了一些方法来实现过滤相关数据的结果。

不支持过滤的包含。

是否有某种类型的连接可以实现此结果?

当学生没有 ReportCard 时,它也不处理这种情况。InvalidOperationException:可空对象必须有一个值。

0 投票
1 回答
2880 浏览

ef-core-2.2 - EF Core外键配置问题

我正在将实际的办公项目迁移到 Entity Framework Core 和 .NET Core。当我想做添加迁移时,我被卡住了。似乎导航属性和外键配置不正确。经过多次尝试,我无法解决我的问题。

添加迁移时的错误消息:

这是我的实体:

高尔夫俱乐部

计划

计划朗

这是我的配置:

我想要的是 Plan 有 1 个外键(GolfClubId)和 PlanLang 2 个外键(PlanId 和 GolfClubId)。

我可以通过哪种方式继续这样做?

谢谢你的回复。

0 投票
2 回答
558 浏览

.net-core - EF Core Migration Add - 使用意外的 DropForeignKey、DropUniqueConstraint、DropColumn 语句创建迁移

我对使用 EF Core 的应用程序进行了一些简单的更改。我刚刚更改了几个 Decimal 类型列的精度,就是这样。当我尝试使用命令创建新迁移时dotnet ef migrations add ...,我看到了我希望看到的迁移语句:

DropForeignKey除了显示大量奇怪的, DropUniqueConstraint,DropColumn语句之外,一切看起来都很好。我经历了其中的很多,并且DropX语句中引用的列甚至都不存在于数据库或模型类中。这些DropX语句中的列名通常以X_TempId,X_TempId1等结尾。

我让我的同事检查(使用 git)与我完全相同的分支并运行完全相同的命令(使用完全相同的dotnet版本),但他的迁移没有显示任何奇怪的DropXYZ陈述。如果我错了,请纠正我,但我相信该dotnet ef migrations add ...命令会将当前状态SomethingModelSnapshot与模型类中的最新状态进行比较,并创建数据库更改以从当前状态变为最新状态。如果是这样,dotnet ef migrations add ...在同一个文件集上运行命令应该总是产生相同的结果,不是吗?

关于可能发生的事情和/或如何解决这个问题的任何想法?

一些版本:

0 投票
0 回答
120 浏览

ef-core-2.2 - 自有实体集合使用

当我运行下面的代码时,我得到一个异常说“实体类型'ElementWeight'需要定义一个主键”。如果我想将 ElementWeight 视为值类型,为什么需要键?

在 OnModelCreating 我执行以下操作

这是课程

如果我按照文档显示添加一个键,那么我会收到一个错误,即项目已经存在

0 投票
1 回答
2589 浏览

.net - 无法解析符号“ToTable”EF Core 2.2.0

我在 dot net core 应用程序中更新了我的依赖项,看起来 ef 库中的某些内容发生了变化,因为表不再在下解析modelBuilder.Entity<MyEntity>.ToTable('EntityTable');

更新的库(来自 git track)

当我一一更新它们时,问题出现在这 2 个之后(其中任何一个在更新时都会导致 DbContext 中的错误)

作为修复的尝试,我也安装了 Microsoft.EntityFrameworkCore.Relational,但它没有修复它。

我的上下文如下所示:

我有 dotnet --version = 2.2.101 (到目前为止最新)

希望你能帮我解决这个问题:)

谢谢!

Deps 作为已解决的 deps 来自 proj的 Deps

0 投票
0 回答
24 浏览

ef-core-2.2 - ef core 2 将 sql 表拆分为拥有类型 - 不想要这个

本文档: https ://docs.microsoft.com/de-de/ef/core/modeling/owned-entities

... 说:“当使用关系数据库时,按照约定,引用拥有的类型映射到与所有者相同的表。”

但在我的情况下它没有 - 拥有的类型存储在一个单独的表中!

这是我的情况:

它产生了这个:

我的配置:

netcoreapp2.2

(用于存储在 mysql 中)

非常感谢您的任何想法和帮助!

最好的问候,法比亚努斯

0 投票
1 回答
476 浏览

entity-framework-core - 如何使用 Entity Framework Core 2.1 定义 1:0 关系?

更新实体Persons我收到以下错误:

这已经在几个地方讨论 过, EF Core 团队报告了一个类似的问题。但是,其中一篇文章是关于实体的多次更新,而一对多的解决方案在这里不起作用;此外,我不能让一个 ID 列为空,而是更喜欢使用流畅的 API 配置。文档示例也不起作用,所以我在这里问。

场景是我将旧的 ASP.NET MVC 4 项目升级到 ASP.NET MVC Core,因此我从 EF 6.1 升级到 EF Core 2.1。如果它解决了这个问题,我会很高兴地转向 2.2;我想当我开始的时候它还处于预发布阶段。

这是我的实体的(可笑的)简化版本:

我正在使用流畅的 API 配置:

像这样拆分它的原因是因为我从我们剩余的 EF 4/5/6 配置中调整了它。耶遗留代码。尽管如此,它仍然有效(对于其他定义的类型)。我正在阅读的方式是“在相关Worker对象上定义一个指向该对象 ID 的外键”。它恰恰相反。

我努力了:

  1. 而是在 WorkerBuilder 类型上定义键关系。令人SQLite Error 19: 'FOREIGN KEY constraint failed'.惊讶的是,它仍然尝试在 Person 实体上定义键,这是错误的。

  2. 删除一些特定的表达式,希望 EF 能够弄清楚关系本身。它没有;如果我提供的信息太少,它会尝试使用不存在的列|字段(例如“PersonID”,或者无法完全找出关系。

所以,我很难过。有没有人成功做到这一点?用简单的英语,

“一个人可能有也可能没有工人记录”(1:0);并且,“如果他们有工人记录,则两条记录具有相同的 ID。” (FK_W_ID__P_ID)