C# 简单使用EF Core 3会导致错误:序列包含多个匹配元素

C# 简单使用EF Core 3会导致错误:序列包含多个匹配元素,c#,.net,postgresql,entity-framework-core,C#,.net,Postgresql,Entity Framework Core,我正在测试EF Core 3在我的应用程序中的使用情况,并遵循Microsoft文档中的“入门”部分() 我正在使用相应的PostgreSQL连接器连接到我的数据库 using (var db = new BloggingContext()) { db.Add(new Blog { Url = "http://blogs.msdn.com/adonet" }); db.SaveChanges(); } 我创建了以下模型:

我正在测试EF Core 3在我的应用程序中的使用情况,并遵循Microsoft文档中的“入门”部分()

我正在使用相应的PostgreSQL连接器连接到我的数据库

   using (var db = new BloggingContext())
   {
        db.Add(new Blog { Url = "http://blogs.msdn.com/adonet" });
        db.SaveChanges();
   }
我创建了以下模型:

  • 博客
然后,在程序启动时,我尝试在数据库中插入一个新的“博客”

   using (var db = new BloggingContext())
   {
        db.Add(new Blog { Url = "http://blogs.msdn.com/adonet" });
        db.SaveChanges();
   }
据我所知,这应该没问题。然后,我创建迁移,并对数据库运行迁移,并且可以看到创建的表具有正确的主键和外键

然后,我在启动程序时收到此错误:
System.TypeInitializationException:“Npgsql.EntityFrameworkCore.PostgreSQL.Query.ExpressionTranslators.Internal.NpgsqlStringMethodTranslator”的类型初始值设定项引发异常。-->System.InvalidOperationException:序列包含多个匹配元素

我已经试了很长一段时间,想看看我做错了什么,但似乎没有弄明白

这里有什么完全不对劲的地方吗

System.TypeInitializationException:“Npgsql.EntityFrameworkCore.PostgreSQL.Query.ExpressionTranslators.Internal.NpgsqlStringMethodTranslator”的类型初始值设定项引发异常。-->System.InvalidOperationException:序列包含多个匹配元素

在初始化静态成员时,从异常消息中,类型
NpgsqlStringMethodTranslator
调用了
.Single()
.SingleOrDefault()
。但序列中有两个或更多项

此类型的源代码可用。我看到调用
.Single()
来定位2个系统方法和2个扩展方法。然而,我觉得它们很好。在每种情况下,应该只有一个匹配结果

您提到了EF Core 3,我只能建议您验证框架和nuget包的版本是否一致。如果看不到任何明显的问题,可以将.csproj文件的相关部分添加到问题中

System.TypeInitializationException:“Npgsql.EntityFrameworkCore.PostgreSQL.Query.ExpressionTranslators.Internal.NpgsqlStringMethodTranslator”的类型初始值设定项引发异常。-->System.InvalidOperationException:序列包含多个匹配元素

在初始化静态成员时,从异常消息中,类型
NpgsqlStringMethodTranslator
调用了
.Single()
.SingleOrDefault()
。但序列中有两个或更多项

此类型的源代码可用。我看到调用
.Single()
来定位2个系统方法和2个扩展方法。然而,我觉得它们很好。在每种情况下,应该只有一个匹配结果


您提到了EF Core 3,我只能建议您验证框架和nuget包的版本是否一致。如果看不到任何明显的问题,可以将.csproj文件的相关部分添加到问题中。

可能是PostgreSQL提供程序没有自动将您的PK作为标识列并为其分配序列。如果希望DB自动分配ID,则可能需要将PK标记为标识列/w[DatabaseGenerated(DatabaseGenerateOptions.Identity)]。SQL Server的提供程序我相信默认情况下,其他提供程序可能不会。异常消息听起来像是内部EF核心提供程序错误。因此,最有可能是EF核心提供商的错误/问题,您最好向他们的问题跟踪者询问/报告。这是崩溃吗?(其中一个
.Single()
调用返回多个结果)框架版本和库版本之间是否存在奇怪的不匹配?虽然我认为
typeof(string)
没有比这两个
Substring
方法更多的方法……但可能是PostgreSQL提供程序没有自动将您的PK作为标识列并为它们分配序列。如果希望DB自动分配ID,则可能需要将PK标记为标识列/w[DatabaseGenerated(DatabaseGenerateOptions.Identity)]。SQL Server的提供程序我相信默认情况下,其他提供程序可能不会。异常消息听起来像是内部EF核心提供程序错误。因此,最有可能是EF核心提供商的错误/问题,您最好向他们的问题跟踪者询问/报告。这是崩溃吗?(其中一个
.Single()
调用返回多个结果)框架版本和库版本之间是否存在奇怪的不匹配?虽然我不认为
typeof(string)
比这两种
Substring
方法有更多的功能。。。
   using (var db = new BloggingContext())
   {
        db.Add(new Blog { Url = "http://blogs.msdn.com/adonet" });
        db.SaveChanges();
   }