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
行
您好,我正在 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
行