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个用户。它应该创建和额外的外键表,但它没有!
请帮忙。
你使用的是第一种方法吗?你能向我们展示你的EntityTypeConfiguration类吗? – tschmit007 2013-04-05 15:08:02
但根据代码你有公开的虚拟ICollection角色{get;组; }在TDOperator类中,如果没有错误,就会在角色中创建一个FK。 –
Marcote
2013-04-05 15:17:08