2013-04-05 67 views
0

我得到這個項目是一個操作員可以有很多角色。 讓我從代碼開始,讓你明白我的意思。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

回答

1

你沒有告訴實體框架你想要角色 - >操作符關係。嘗試將其添加到您的Role課程中。

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

我會在下週嘗試這個工作。我認爲你是對的,這將解決它。 – RoXaS 2013-04-05 19:12:01

+0

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