Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.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# 如何使用外键获取具有EFcore的复杂对象?_C#_Api_Asp.net Core_Web_Entity Framework Core - Fatal编程技术网

C# 如何使用外键获取具有EFcore的复杂对象?

C# 如何使用外键获取具有EFcore的复杂对象?,c#,api,asp.net-core,web,entity-framework-core,C#,Api,Asp.net Core,Web,Entity Framework Core,我正在使用asp net core 5开发web API! 我有一个问题,我用EFCORE创建数据库,我想查询一个有外键的对象 这是我的密码: public long RefreshTokenId { get; set; } public string JwtTokenId { get; set;} public User user { get; set; } public Int64 expirationTime { get; set; } public

我正在使用asp net core 5开发web API! 我有一个问题,我用EFCORE创建数据库,我想查询一个有外键的对象

这是我的密码:

    public long RefreshTokenId { get; set; }
    public string JwtTokenId { get; set;}
    public User user { get; set; }
    public Int64 expirationTime { get; set; }
    public string Token { get; set; }
    public bool Revoked { get; set; }
在这个类中,根据efcore文档,我使用用户对象作为一个具有外键的一对一关系的对象

我的问题是:

        public async Task<long> RefreshToken(RefreshRequest refreshRequest)
        {
        RefreshToken refreshToken = await Task.Run(() => {
            return _appContext.refreshTokens.SingleOrDefault(x => x.Token ==  
                 refreshRequest.refreshToken);
        });

         return refreshToken.user.UserId;
         }
公共异步任务刷新令牌(刷新请求)
{
RefreshToken RefreshToken=等待任务。运行(()=>{
return appContext.refreshTokens.SingleOrDefault(x=>x.Token==
refreshRequest.refreshToken);
});
返回refreshToken.user.UserId;
}
当我运行此函数时,会引发空指针异常! 有人能告诉我如何用efcore检索用户对象吗?

试试看

 public async Task<long> RefreshToken(RefreshRequest refreshRequest)
        {
        RefreshToken refreshToken = await Task.Run(() => {
            return _appContext.refreshTokens.Where(x => x.Token ==  
                 refreshRequest.refreshToken).SingleOrDefault();
        });

         return refreshToken.user.UserId;
         }
公共异步任务刷新令牌(刷新请求)
{
RefreshToken RefreshToken=等待任务。运行(()=>{
返回_appContext.refreshttokens.Where(x=>x.Token==
refreshRequest.refreshToken).SingleOrDefault();
});
返回refreshToken.user.UserId;
}

主要问题是我想用外键加载相关数据,它有三种方法,下面的链接将帮助您