.net dotnet6实体框架where子句

4uqofj5v  于 2022-11-19  发布在  .NET
关注(0)|答案(1)|浏览(244)

我已经通过项目从dotnet core 2.1转换到dotnet 6。我正在一步一步地转换它。我现在卡住的是where子句。我不能在存储库中运行这个简单的查询

public IQueryable<PostType> getPostType()
    {
       
    

        var d= _context.PostType.Where(e => e.PostStatusId==2).ToList();  // this thing is not working
        return _context.PostType.Where(e => e.PostStatusId == 2);
    }

任何人都可以得到为什么?查询是工作之前
这就是结果

邮件类型

CREATE TABLE [dbo].[PostType](
[PostTypeId] [int] NOT NULL,
[PostTypeGuid] [uniqueidentifier] NULL,
[ParentId] [int] NULL,
[CategoryId] [int] NULL,
[Name] [varchar](100) NOT NULL,
[Slug] [varchar](500) NULL,
[ThumbnailImg] [nvarchar](255) NULL,
[WebSiteId] [int] NULL,
[PostStatusId] [int] NOT NULL,
[isMediaType] [bit] NOT NULL,
[isNewsletter] [bit] NOT NULL,
[AllowableExtension] [varchar](100) NULL,
[CreatedBy] [int] NULL,
[CreatedDate] [datetime] NULL,
[ModifiedBy] [int] NULL,
[ModifiedDate] [datetime] NULL,
 CONSTRAINT [PK_PostType] PRIMARY KEY CLUSTERED 
(
    [PostTypeId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80) ON [PRIMARY]
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[PostType] ADD  CONSTRAINT [DF_PostType_PostTypeGuid]  DEFAULT (newid()) FOR [PostTypeGuid]
GO

ALTER TABLE [dbo].[PostType] ADD  CONSTRAINT [DF_PostType_int_PostStatusId]  DEFAULT ((2)) FOR [PostStatusId]
GO

0ve6wy6x

0ve6wy6x1#

我认为这个问题与this one类似,是由于EF Core中添加了nullable reference types及其支持而引起的。请参阅文档的必需和可选属性-〉约定部分:
C# 8引入了一个名为可空引用类型(NRT)的新特性,它允许引用类型被注解,指示它们是否包含空值。这个特性在新项目模板中默认启用,但在现有项目中保持禁用,除非显式选择。可空引用类型以如下方式影响EF Core的行为:

  • 如果禁用了可为null的引用类型,则所有具有.NET引用类型的属性都按约定配置为可选(例如,字符串)。
  • 如果启用了可为Null的指涉型别,则会根据其.NET型别的C#可为Null性来设定属性:string?将配置为可选,但string将配置为必需。

请停用项目的可为Null指涉型别,或将Map的属性标记为可为Null(在此情况下,某些string会造成问题,因此请将Map属性的string变更为string?)。

相关问题