C#EntityFramework内部服务器错误

时间:2017-05-26 12:43:16

标签: c# asp.net entity-framework asp.net-web-api

我试图在我的一个程序中实现一个新功能。此功能允许添加和编辑项目概述。我在数据库中使用一对多外键,其中“项目”具有一个项目负责人(用户),一个“用户”具有许多项目负责人(项目)。现在在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; }
}

我在网站或家里的书中搜索了多个教程。我这样做完全像他们说的那样。我错过了什么吗?

0 个答案:

没有答案