Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法使用Devart.Data.Oracle.EFCore保存.NET 5 EF Core中的更改_C#_Oracle_Entity Framework_Devart_.net 5 - Fatal编程技术网

C# 无法使用Devart.Data.Oracle.EFCore保存.NET 5 EF Core中的更改

C# 无法使用Devart.Data.Oracle.EFCore保存.NET 5 EF Core中的更改,c#,oracle,entity-framework,devart,.net-5,C#,Oracle,Entity Framework,Devart,.net 5,我目前正在开发一个ASP.NET 5.0应用程序-我将该应用程序从.NET3.1迁移到.NET 5.0。我使用Entity Framework Core和Devart.Data.Oracle.EFCore连接到Oracle数据库 我试图用字符串值保存一个简单记录,当我调用Context.saveChangesSync()方法时,我得到了以下错误:序列不包含任何元素,奇怪的是异常的来源是System.Linq=>System.Linq.ThrowHelper.ThrowNoElementsExce

我目前正在开发一个ASP.NET 5.0应用程序-我将该应用程序从.NET3.1迁移到.NET 5.0。我使用Entity Framework Core和Devart.Data.Oracle.EFCore连接到Oracle数据库

我试图用字符串值保存一个简单记录,当我调用Context.saveChangesSync()方法时,我得到了以下错误:序列不包含任何元素,奇怪的是异常的来源是System.Linq=>System.Linq.ThrowHelper.ThrowNoElementsException()。有一个StackTrace,但没有详细的内部异常消息

我在存储库中的保存方法如下所示:

public async Task<T> Add(T entity)
{
    // ...   
    await Context.AddAsync<T>(entity);
    await Context.SaveChangesAsync();

    return entity;
}
public class Tree
{
    public int Id { get; set; }
    public string Name { get; set; }
}

Column_Name | Data_Type
------------------------
ID          | NUMBER(10,0)
NAME        | NCLOB
树实体配置如下所示(用EF Core搭建):

这很奇怪,因为在我将我的应用程序移植到.NET5.0并更新所有NuGet软件包之前,它就工作了

我跟踪到以下NuGet软件包更新中的错误:

我无法单独更新Devart.Data.Oracle.EFCore,因为它依赖于下面列出的Microsoft NuGet软件包。我必须立即更新所有5个NuGet包

在这个NuGet包更新之后,我不能再保存实体了

也许我的配置中遗漏了什么


你知道如何解决这个问题吗?

在EF Core 5中插入或更新时抛出“Sequence contains no elements”(序列不包含任何元素)的错误已经修复。我们将在本周发布新的Oracle dotConnect公共版本。

发布抛出的实际代码和完整异常,而不是“类似这样的东西”。看起来您在EF上放置了一个“通用存储库”,尽管EF不仅实现了存储库,还实现了工作单元<代码>保存更改保存所有挂起的更改,而不仅仅是最后一个更改。这使得试图立即保存的
Add
方法成为一个有缺陷的方法-充其量,它的性能非常差,并且会破坏UoW。最坏的情况是,它可以执行42次删除和67次更新以及插入。要了解为什么使用“存储库”是个坏主意,请查看Gunnar Peipman的。至于异常,
序列不包含任何元素
通常是从
Single()
或其他期望找到至少一个结果的调用中抛出的。绝对不是
Add
(不调用数据库)或
SaveChanges
。异常的堆栈跟踪将显示调用的方法。这不是保存问题。您没有连接到数据库。当应用程序启动时,它从数据库获取最新数据。如果您没有获得任何数据,则在保存时会出现错误“序列不包含元素”。请参阅:Oracle 9.14.1160的新版本dotConnect现在可供下载:。
public virtual DbSet<Tree> Trees { get; set; }
Column_Name | Data_Type
------------------------
ID          | NUMBER(10,0)
NAME        | NCLOB