EF在数据库中存在错误的关系

问题描述:

我得到这个项目是一个操作员可以有很多角色。 让我从代码开始,让你明白我的意思。EF在数据库中存在错误的关系

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

你使用的是第一种方法吗?你能向我们展示你的EntityTypeConfiguration类吗? – tschmit007 2013-04-05 15:08:02

+0

但根据代码你有公开的虚拟ICollection 角色{get;组; }在TDOperator类中,如果没有错误,就会在角色中创建一个FK。 – Marcote 2013-04-05 15:17:08

你没有告诉实体框架你想要角色 - >操作符关系。尝试将其添加到您的Role课程中。

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

我会在下周尝试这个工作。我认为你是对的,这将解决它。 – RoXaS 2013-04-05 19:12:01

+0

它的工作!非常感谢! – RoXaS 2013-04-12 11:50:43