我试图在我的一个程序中实现一个新功能。此功能允许添加和编辑项目概述。我在数据库中使用一对多外键,其中“项目”具有一个项目负责人(用户),一个“用户”具有许多项目负责人(项目)。现在在Web API中代码实际到达“return Ok(projectList);”。但在客户端它说内部服务器错误。 我认为它与外键有关,因为在实现新功能之前User类已经存在。当我调试API时,没有任何错误,属性“ProjectLeader”和“ProjectLeads”不为空。我在这里做错了什么?
以下是代码:
User.cs
public int Id { get; set; }
[Required(AllowEmptyStrings = false)]
public string Username { get; set; }
[Required(AllowEmptyStrings = false)]
public string PasswordHash { get; set; }
[Required(AllowEmptyStrings = false)]
[EmailAddress(ErrorMessage = "Invalid email format")]
public string EMail { get; set; }
[Required(AllowEmptryStrings = false)]
public DateTime Birthdate { get; set; }
public bool IsConfirmed { get; set; }
public bool FirstLogin { get; set; }
[Required(AllowEmptyStrings = false)]
public int ActivationCode { get; set; }
public UserRole UserRole { get; set; }
public byte[] ProfilePicture { get; set; }
public UserGroup UserGroup { get; set; }
public virtual ICollection<Project> ProjectLeads { get; set; }
Project.cs
public int Id { get; set; }
[Required(AllowEmptryStrings = false)]
[ForeignKey("ProjectLeader_Id")]
public virtual User ProjectLeader { get; set; }
[Required(AllowEmptyStrings = false)]
public string ProjectName { get; set; }
[Required(AllowEmptyStrings = false)]
public string GameTitle { get; set; }
[Required(AllowEmptyStrings = false)]
public string Description { get; set; }
public ProjectState ProjectState { get; set; }
public bool IsPC { get; set; }
public bool IsMac { get; set; }
public bool IsAndroid { get; set; }
public bool IsIOS { get; set; }
UserRole,UserGroup和ProjectState是枚举。
我下载项目列表的方法:
[HttpGet]
public IHttpActionResult GetProjects()
{
var db = new DataBaseContext();
try
{
if (db.Projects.Any())
{
var projectList = db.Projects.ToList();
return Ok(projectList);
}
else
return Ok(new List<Project>());
}
catch (Exception ex)
{
log.Fatal($"Ein Fehler ist aufgetreten beim Runterladen der Projekte: {ex.Message}", ex);
return BadRequest();
}
}
(“Ein Fehler ist aufgetreten beim Runterladen der Projekte”的意思是“下载项目时出错”)
如果重要的是DataBaseContext.cs:
public class DataBaseContext : DbContext
{
public DbSet<User> Users { get; set; }
public DbSet<License> Licences { get; set; }
public DbSet<Project> Projects { get; set; }
}
我在网站或家里的书中搜索了多个教程。我这样做完全像他们说的那样。我错过了什么吗?