InvalidCastException: 无法将类型 'System.Guid' 的对象转换为类型 'System.String'。在 asp.net 核心 webapi 中

InvalidCastException: Unable to cast object of type 'System.Guid' to type 'System.String'. in asp.net core webapi

您好,我正在 asp.net 核心中创建一个 webapi,当我调用控制器时它抛出错误,这显示了我如何创建模型和控制器。 型号:

public class tblProject
{
    [Key]
    public Guid prj_id { get; set; }
    public string prj_name { get; set; }
    public string prj_endcustomer { get; set; }
    public string prj_customer_name { get; set; }
    public string prj_client { get; set; }
    public string prj_scope_of_supply { get; set; }
    public int prj_revision { get; set; }
    public bool isactive { get; set; }
    public DateTime created_date { get; set; }
    public string created_by { get; set; }
}

控制器:

[Route("api/[controller]")]
[ApiController]
public class CDProjectController : ControllerBase
{
    private readonly CDDbcontext _context;

    public CDProjectController(CDDbcontext context)
    {
        _context = context;
    }

    // GET: api/DCandidate
    [HttpGet]
    public async Task<ActionResult<IEnumerable<tblProject>>> GetDCandidates()
    {
        return await _context.tblProject.ToListAsync();
    }

    // GET: api/DCandidate/5
    [HttpGet("{id}")]
    public async Task<ActionResult<tblProject>> GetDCandidate(Guid prj_id)
    {
        var dCandidate = await _context.tblProject.FindAsync(prj_id);

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

        return dCandidate;
    }

var dCandidate = await _context.tblProject.where(p => p.prj_id == prj_id).singleOrdefault();

首先,您需要检查列数据类型为 varchar 或 nvarchar 的 sql table。在 c# 方法调用后传递 guid 参数以设置字符串类型。

例子

string prj_id = System.Guid.NewGuid().ToString();

var dCandidate = await _context.tblProject.Where(p => p.prj_id == prj_id).SingleOrDefault();

检查另一个例子

创建 TABLE MathStudents1 ( Id UNIQUEIDENTIFIER PRIMARY KEY default NEWID(), 学生姓名 VARCHAR (50)

) 开始

INSERT INTO MathStudents1 VALUES(默认,'Sally') INSERT INTO MathStudents1 VALUES(默认,'Edward')

在我使用 [FromRoute] 时发现错误,它正在工作感谢大家的回答

在我的例子中,数据库中的某些行是 Null 检查或删除 Null