将LINQ结果分配给子属性-InvalidCastException:无法转换类型的对象

问题描述 投票:0回答:1

我有两个表,Project和ProjectSshasp。

我有两个模型,ProjectModelProjectSshasp。我在ProjectModel中的属性之一是:

public virtual ProjectSshasp ProjectSshaspModel { get; set; }

我收到此错误:

[InvalidCastException:无法将类型为'Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable'1 [xxxAPI.Models.ProjectSshasp]'的类型强制转换为'xxxAPI.Models.ProjectSshasp'。

在此行:

if (projectSshaspModel != null)
 projectModel.ProjectSshaspModel = (ProjectSshasp)projectSshaspModel;

这里是完整的代码:

    public virtual ProjectSshasp ProjectSshaspModel { get; set; }


       [HttpGet("{id}")]
    public async Task<ActionResult<ProjectModel>> GetProjectModel(Guid id)
    {
        //var projectModel = await _context.Project.FindAsync(id);
        var projectModel = await _context.Project
                    .AsNoTracking()
                    .FirstOrDefaultAsync(a => a.ProjectID == id);


        var projectSshaspModel = _context.ProjectSshasp
                .Where(a => a.ProjectID  == id);

        if (projectSshaspModel != null)
            projectModel.ProjectSshaspModel = (ProjectSshasp)projectSshaspModel;

        if (projectModel == null)
        {
            return NotFound();
        }

            return Ok(new { projectModel });


    }
c# linq .net-core
1个回答
0
投票

替换:

var projectSshaspModel = _context.ProjectSshasp
            .Where(a => a.ProjectID  == id);

使用:

var projectSshaspModel = _context.ProjectSshasp
            .FirstOrDefault(a => a.ProjectID  == id);
© www.soinside.com 2019 - 2024. All rights reserved.