C# 简单使用EF Core 3会导致错误:序列包含多个匹配元素
我正在测试EF Core 3在我的应用程序中的使用情况,并遵循Microsoft文档中的“入门”部分() 我正在使用相应的PostgreSQL连接器连接到我的数据库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(); } 我创建了以下模型:
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();
}