问题标签 [ef-core-3.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 回答
629 浏览

c# - 抑制 EF core 3.0.x 初始化消息

我有:

每当我访问我的 DBContext 时,控制台都会显示

信息:Microsoft.EntityFrameworkCore.Infrastructure[10403] Entity Framework Core 3.0.0-preview4.19176.6 已初始化

有没有办法过滤掉这个特定的消息?当我做很多查询时,它只会弄乱我的控制台调试窗口..

0 投票
1 回答
3969 浏览

c# - 无法创建迁移,因为无法识别 EntityFramework.Design 包

我安装了EntityFrameworkCore.Design运行以下。

它似乎已安装,我可以在 VS 中看到以下内容。

[图片]

但是,当我尝试使用

我有相当长的时间等待,然后是下面的错误。

您的启动项目“Web”没有引用 Microsoft.EntityFrameworkCore.Design。此包是 Entity Framework Core Tools 工作所必需的。确保您的启动项目正确,安装包,然后重试。

当我检查Web.proj文件时,我看到了以下部分。

如何确保计算机能看到包裹?

0 投票
2 回答
2351 浏览

c# - 如何修复 Entity Framework Core 错误“值不能为空。参数名称:frameworkName”?

使用 EF Core (3.0.0-preview6.19304.10) 的预发布版本。当我打电话时DbContext.SaveChanges(),它会导致错误

值不能为空。参数名称 frameworkName

这是上下文类

型号配置:

和实体:

这是错误堆栈跟踪

在 Microsoft.EntityFrameworkCore.Metadata.Internal.ClrAccessorFactory'1.Create(PropertyInfo propertyInfo, IPropertyBase propertyBase)
在 Microsoft.EntityFrameworkCore.Internal.NonCapturingLazyInitializer.EnsureInitialized[TParam,TValue](TValue&target, TParam param, Func'2 valueFactory)
在 Microsoft。 EntityFrameworkCore.ChangeTracking.Internal.InternalEntityEntry.WritePropertyValue(IPropertyBase propertyBase, Object value)
at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.InternalEntityEntry.SetProperty(IPropertyBase propertyBase, Object value, Boolean setModified, Boolean isCascadeDelete, CurrentValueType valueType)

在 Microsoft.EntityFrameworkCore.ChangeTracking.Internal.InternalEntityEntry.AcceptChanges( ) 在 Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager 的 Microsoft.EntityFrameworkCore.ChangeTracking.Internal.InternalEntityEntry.SetProperty(IPropertyBase propertyBase, Object value, Boolean setModified, Boolean isCascadeDelete)
。 AcceptAllChanges(IReadOnlyList'1 changedEntries)
在 Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChanges(Boolean acceptAllChangesOnSuccess)

在 Microsoft.EntityFrameworkCore.DbContext.SaveChanges(布尔型 acceptAllChangesOnSuccess)

在 C:\Projects\EFImplementationRepo\EFPersistance\Repositories\EFBaseRepository.cs:line 154 中的 EFPersistence.Repositories.EFBaseRepository'4.SaveChanges()

在 C:\Projects\EFImplementationRepo\EFImplementationRepo\Program.cs:line 31 中的 EFImplementationRepo.Program.SeedData(EFBaseRepository'4 baseRepository)

在 C:\Projects\EFImplementationRepo\EFImplementationRepo\Program.cs:line 16 中的 EFImplementationRepo.Program.Main()

0 投票
2 回答
3351 浏览

c# - 在 .NET Core 3 下的 EF 中,我是否仍需要一个显式的 N 对 N 中间实体?

我读过几篇类似这样的文章,其中暗示 A 和 B 之间需要一个显式实体 AB。

当我用谷歌搜索时,我找不到任何官方信息证实或反驳该声明。另一方面,预览版的文档可能没有完全覆盖。

在 .NET Core 3 中是否有可能,还是我们仍然被迫手动创建 N 对 N 实体?

0 投票
1 回答
2017 浏览

c# - EF Core - FirstOrDefaultAsync 抛出空引用异常

我正在尝试使用 XUnit 测试 ASP.NET Core Web API 控制器。我直接在控制器中使用 DBContext。在生产中,我使用的是 SqlServer,而对于测试,我使用的是 InMemory 提供程序。当我测试一些使用 EF CoreFirstOrDefaultAsync方法的代码时,应用程序抛出空引用异常。我正在寻找的值在数据库中不存在。根据我的理解,它应该返回 NULL,它不应该抛出异常。

我尝试了类似的东西where(x => x.Id = id).FirstOrDefaultAsync(),它也抛出了相同的空引用异常。

空引用异常

当我尝试类似

有用。dbcontext 和 users 属性都有值,它们不为空。

即时窗口

请帮忙。

0 投票
1 回答
6812 浏览

c# - EF Core 3.0 中的自有类型映射问题

我已经从 EF Core Preview5 迁移到 Preview7,现在我通过 select 具有相同的内部复杂属性映射。

例如:

早些时候,代码modelBuilder.Entity<Car>().OwnsOne(e => e.Volume)工作正常,但现在它需要使用WithOwner但我无法理解(见这里:https ://docs.microsoft.com/en-us/ef/core/what-is-new/ef-core -3.0/break-changes ) 我不能使用这样的代码:modelBuilder.Entity<Car>().OwnsOne(e => e.Volume).WithOwner("Car")modelBuilder.Entity<Car>().OwnsOne(e => e.Volume).WithOwner(f => f.Car). 有没有人有同样的问题?

谢谢。

更新。

我检查了 OrderStoreDbContextModelSnapshot.cs。我在这里发布了与上面的示例完全一致的其他示例。

在哪里

因此,正如我们所见,ContextSnapshot 正确地映射了数据(在这种情况下,ComplexType 属性实际上没有任何作用,实验性地)。

OrderStoreDbContext有财产public DbSet<OrderProfile> OrderProfiles { get; set; }

但是 linq 请求var orderProfiles = await orderDbContext.OrderProfiles.ToListAsync();仅映射简单类型(存在于 OrderProfiles 表中,但并不复杂。 代码var orderProfiles = await orderDbContext.OrderProfiles.Include(p => p.Volume).ToListAsync();也没有效果 - 我得到orderProfiles.VolumeandorderProfiles.StartPoint和. orderProfiles.EndPointnull

但是,在 Preview5 中,此代码运行良好。微软开发人员是否破坏了 EF Core 3.0 Preview7 中的复杂类型映射或我弯曲的双手中的问题?

更新 2. 在 github 项目 repo 上发布了一个问题。

0 投票
1 回答
462 浏览

c# - Entity Framework Core 3 Preview 7 - 包括 Where 中使用的属性所必需的

以前这会起作用:

现在我需要为“用户”对象包含“包含”

那正确吗?这改变了Entity Framework Core 3 Preview 7吗?

如果我不包括它,我会得到一个不友好的例外。

0 投票
0 回答
1656 浏览

c# - 在 EF Core 3 下未实现“get_Info”的延迟加载崩溃

我按照文档告诉我,从 2.1 版开始,我可以执行以下操作。

抛出下面的异常不起作用。注释掉该UseLazyLoadingProxies部分使其正常运行,这应该归咎于懒惰)。

System.TypeLoadException HResult=0x80131522 消息=方法 'get_Info' 在类型 'Microsoft.EntityFrameworkCore.SqlServer.Infrastructure.Internal.SqlServerOptionsExtension' 来自程序集'Microsoft.EntityFrameworkCore.SqlServer,版本 = 3.0.0.0,文化 = 中性,PublicKeyToken = adb9793829ddae60'没有实现。源=Microsoft.EntityFrameworkCore.SqlServer

我已经安装了最新的Microsoft.EntityFrameworkCore.Proxies版本。

当我用谷歌搜索时,有一些关于延迟加载的信息没有在 EF Core 中实现,但我认为那是在 1.x 中,或者只是被错误地描述了。

我错过了什么?

如果它没有实现,我想知道在我的 WebAPI 上发出带有子对象的对象时,我到底应该如何停止循环引用,但那是另一回事了。谷歌搜索导致我使用懒惰,即。

0 投票
1 回答
352 浏览

wpf - ef.net 核心,属性而不是字段

因此,我们将一个旧的 wpf 应用程序移植到 .net core wpf 中。作为努力的一部分,我们还将数据层移动到EF.net core.

  1. 由于我们使用 Prism MVVM,在 DI 服务上下文中,我们保留了一个实时数据上下文,它跟踪用户通过 wpf 前端和服务显示和编辑的实体。
  2. 为了实现“撤消”功能,我们使用跟踪对象 entity.HasChangeTrackingStrategy(ChangeTrackingStrategy.ChangingAndChangedNotificationsWithOriginalValues);

在编辑时,对象会更新,在 Reload() 时,它会从跟踪的原始值恢复。就对象而言,操作还可以,但是,wpf 方面却无法正常工作。似乎 ef.net 核心是 wpf 应用程序的一个非常不适应的公民,假设它是 INotifyPropertyChanged 机制的唯一受益者。当然,这对于 WPF 来说一点也不真实。

  1. EF.net 在加载、重新加载等时似乎不使用属性。它直接在基础字段上工作。因此,NotifyPropertyChanged 永远不会触发,因此网格永远不会用新数据刷新,比如dbContext.Entry(c).Reload();. 所以问题 #1,有没有办法强制 ef.net 使用属性而不是字段?
  2. ef.net 的实现INotifyPropertyChanged似乎有缺陷。如果您在属性上调用 PropoertyChanged 事件,而不实际更改它,它会将实体标记为Modified,即使它可以轻松比较原始值和当前值。这禁止我们手动引发属性更改事件来控制 WPF 呈现。不知道如何解决这个问题,或者它是否可以解决,因为它只适用于这个跟踪策略。我愿意接受任何关于如何在不激怒 ef.net 的情况下通知 WPF 元素的建议。
  3. 确定对象的状态是相当复杂的操作,涉及的操作dbContext.Entry(entry).State存在于DataContext层次结构内的任何 WPF 绑定之外。它使绑定状态几乎不可能(例如更改脏条目的背景或显示保存按钮等)。NotifySetterObject我们通过从处理INotify*实现并保留[NotMapped] bool IsDirty标志的基类继承我们所有的实体类来“解决”它。不用说,我非常不喜欢这样,保留两个未链接的州旗听起来像是一场等待发生的事故。我想知道您是否遇到过类似的问题,以及您是否设计了一个更好、更理智的解决方案。

EF.net 似乎经历了从框架 ef.net 的重大变革转变,因为它只非常适合分离的上下文场景(如 asp.net)。我们是不是在浪费时间试图把这双鞋穿在 wpf 上?我们是否应该专注于更适合现场环境的不同 OR 引擎?

0 投票
1 回答
600 浏览

.net-framework-version - EF Core 3.0 preview 7 无法通过 VS2019 nuget 为 .NET Framework 4.8 项目安装

我有一个 .NET Framework 4.8 VS2019 解决方案,目前针对 EF Core 2.0。我试图通过“管理 Nuget 包”将项目升级到 EF Core 3.0 预览版 7,并得到如下错误:Package Microsoft.EntityFrameworkCore.SqlServer 3.0.0-preview7.19362.6 is not compatible with net48 (.NETFramework,Version= v4.8)/赢。包 Microsoft.EntityFrameworkCore.SqlServer 3.0.0-preview7.19362.6 支持:netstandard2.1 (.NETStandard,Version=v2.1)

我已经验证了预览版 6 安装正常,这是有道理的,因为它以 .NET Framework 4.8 支持的 .NET Standard 2.0 为目标。

不幸的是,目前从 .NET Framework => .NET Core 升级我的解决方案文件是不可行的,因为 .NET Core 不支持旧的 WCF/.NET-remoting(并且不会来自我的阅读) . 同样,听起来 .NET Framework 永远不会支持 .NET Standard 2.1。这是否意味着如果我想升级到 .NET Core 3.0 预览版 6,我必须完全放弃使用 EF Core?