C# 数据为空。无法对空值调用此方法或属性。实体框架核心

C# 数据为空。无法对空值调用此方法或属性。实体框架核心,c#,asp.net,asp.net-core,entity-framework-core,C#,Asp.net,Asp.net Core,Entity Framework Core,我试图获取数据列表,但从GetAllList()方法获取的数据为空。在这个项目中,我将使用.NETCore和ORM实体框架核心代码优先方法以及存储库模式 实体类 公共类生成器 { 公共int Id{get;set;} 公共字符串TrackId{get;set;} 公共字符串轨道{get;set;} 公共字符串SId{get;set;} 公共int InstanceNumber{get;set;} 公共字符串注释{get;set;} 公共布尔值使用{get;set;} 公共布尔等时系统类型{get

我试图获取数据列表,但从
GetAllList()
方法获取的数据为空。在这个项目中,我将使用.NETCore和ORM实体框架核心代码优先方法以及存储库模式

实体类

公共类生成器
{
公共int Id{get;set;}
公共字符串TrackId{get;set;}
公共字符串轨道{get;set;}
公共字符串SId{get;set;}
公共int InstanceNumber{get;set;}
公共字符串注释{get;set;}
公共布尔值使用{get;set;}
公共布尔等时系统类型{get;set;}
公共布尔值为{get;set;}
公共字符串异常{get;set;}
公共日期时间保留日期{get;set;}
公共日期时间上次更新{get;set;}
公共布尔被删除{get;set;}
公共布尔值是manuallydefined{get;set;}
公共int由{get;set;}保留
}
接口

公共接口是DGenerator存储库,其中T:SIDGenerator
{
T GetById(int-id);
///实体名单
List GetAllList();
}
实施

公共类SidGeneratorRepository:ISidGeneratorRepository,其中T:SIDGenerator
{
私有只读屏蔽dbContext_dbContext;
专用只读iLogger管理器(U记录器);
私有只读IDateTime\u日期;
公共SidGeneratorRepository(SHIELDDbContext、iLogger管理器记录器、IDateTime日期)
{
_dbContext=dbContext;
_记录器=记录器;
_日期=日期;
}
公共作废删除(SIDGenerator实体)
{
抛出新的NotImplementedException();
}
公共void DeleteById(int-id)
{
抛出新的NotImplementedException();
}
公共列表GetAllList()
{
var result=\u dbContext.Set()//此语句导致异常数据为null
.ToList();
返回结果;
}
公共T GetById(int-id)
{
var sid=_dbContext.Set()
.FirstOrDefault(i=>i.Id==Id);
如果(sid==null)
{
抛出new-NotFoundException(“找不到id为“+id.ToString(),id为的Sid”);
}
返回sid;
}
}
这是我的dbcontext类

public类屏蔽DbContext:DbContext
{
公共屏蔽DbContext(DbContextOptions选项)
:基本(选项)
{
}
公共数据库集生成器{get;set;}
模型创建时受保护的覆盖无效(ModelBuilder ModelBuilder)
{
基于模型创建(modelBuilder);
modelBuilder.ApplyConfigurationsFromAssembly(typeof(UserRoleSeedConfig.Assembly));
}
}
下面是我的处理程序类

公共任务句柄(GetAllSidQuery请求、CancellationToken CancellationToken)
{
尝试
{
var sidList=_sidRepository.GetAllList();
如果(sidList?.Count>0)
{
var viewModel=新的GetAllSidViewModel
{
sIDlist=sIDlist
};
返回Task.FromResult(viewModel);
}
返回null;
}
捕获(例外情况除外)
{
_logger.LogError(“无法从DB”+ex中检索SID列表);
返回null;
}
}
下面是上述实体的表脚本

创建表[dbo].[SIDGenerator](
[Id][int]标识(1,1)不为空,
[音轨][nvarchar](最大)空,
[TrackId][nvarchar](最大值)NULL,
[SId][nvarchar](最大值)NULL,
[InstanceNumber][int]NULL,
[注释][nvarchar](最大值)空,
[InUse][bit]空,
[IsotherSystemType][bit]空,
[IsDeployed][bit]空,
[异常][nvarchar](最大值)NULL,
[ReservationDate][datetime2](7)空,
[LastUpdate][datetime2](7)空,
[ReservatedBy][int]空,
[IsDeleted][bit]为空,
[IsManuallyDefined][bit]空,
约束[PK_SIDGenerators]主键群集
(
[Id]ASC
)在[主]上(PAD_INDEX=OFF,STATISTICS_norecocomputer=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON,OPTIMIZE_FOR_SEQUENTIAL_KEY=OFF)
)在[PRIMARY]文本上图像在[PRIMARY]上
去

像这样更改您的型号,或者根据您的意愿配置可为空的属性

public class SIDGenerator
{
    public int Id { get; set; }
    public string TrackId { get; set; }
    public string Track { get; set; }
    public string SId { get; set; }
    public int? InstanceNumber { get; set; }
    public string Comment { get; set; }
    public bool? InUse { get; set; }
    public bool? IsOtherSysType { get; set; }
    public bool? IsDeployed { get; set; }
    public string Exception { get; set; }
   
    public DateTime? ReservationDate { get; set; }
    public DateTime? LastUpdated { get; set; }
    public bool? IsDeleted { get; set; }
    public bool? IsManuallyDefined { get; set; }
    public int? ReservatedBy { get; set; }
}

在您的模型中,几乎所有字段都可以为空,这是必需的吗?如果是,请更正您的模型,例如
DateTime?预订日期
。或正确配置模型。否除Id属性外,不需要所有字段