EF在数据库中放错了关系

时间:2013-04-05 15:02:01

标签: c# asp.net-mvc entity-framework

我得到的这个项目是一个操作员可以有很多角色。 让我从代码开始,这样你就可以看到我的意思了。

TDOperator:

[DisplayName("Operator")]
public class TDOperator
{


    public int TDOperatorId { get; set; }


    [DisplayName("First Name")]
    [Required]
    public string FirstName { get; set; }

    [Required]
    [DisplayName("Last Name")]
    public string LastName { get; set; }

    [Required]
    [DataType(DataType.EmailAddress)]
    [DisplayName("Email Adress")]
    public string EmailAddress { get; set; }




    [Required]
    public string Username { get; set; }

    [Required]
    [DataType(DataType.Password)]
    public string Password { get; set; }

    [HiddenInput(DisplayValue = true)]
    public DateTime LastLogin { get; set; }



    public List<string> RoleNames
    {
        get
        {
            return Roles.Select(x => x.Name).ToList();

        }
    }


    public virtual ICollection<Role> Roles { get; set; }



    [Required]
    [DisplayName("Topdesk Username")]
    public string TDUserName { get; set; }

    public virtual ICollection<TDOperator> Coaches { get; set; }
    public List<string> CoachNames
    {
        get
        {
            return Coaches.Select(x => x.ToString()).ToList();

        }
    }
    public virtual ICollection<TDOperator> Pupils { get; set; }
    public List<string> PupilNames
    {
        get
        {
            return Pupils.Select(x => x.ToString()).ToList();

        }
    }






    public override string ToString()
    {
        return this.FirstName + " " + this.LastName;
    }
}

还有角色

public class Role
{
    public int RoleID { get; set; }
    public string Name { get; set; }
    public int Priority { get; set; }
}

对于凌乱的代码我很抱歉我打算稍后清理它。

当我运行它时,它生成一个包含3个带列的表的数据库:

 - TDOperatorTDOperators
  1.TDOperator_TDOperatorId
  2.TDOperator_TDOperatorId1


 - TDOperators
  1.TDOperatorId
  2.FirstName
  3.LastName
  4.EmailAdress
  5.UserName
  6.PassWord
  7.LastLogin
  8.TDUsername 


 - Roles
  1.RoleId
  2.Name
  3.Priority
  4.TDOperator_TDOperatorId <<--- WTF!

这个问题是我现在只能为一个用户分配一个角色。例如,只能有1个管理员和1个用户。它应该创建和额外的外键表,但它没有!

请帮忙。

1 个答案:

答案 0 :(得分:1)

您没有告诉实体框架您想要角色 - &gt;经营者关系。请尝试将其添加到Role课程中。

public virtual ICollection<TDOperator> Operators { get; set; }