2014-12-09 92 views
3

我想映射一个用户的属性,该用户在数据库中具有多对多的关系,但每个用户只有一个关系。但我无法在实体框架中找出所需的地图。我有以下实体:实体框架多对多对单个对象

public class User 
{ 
    public int Id { get; set; } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 

    //Need to map this property 
    public virtual SecurityRole SecurityRole { get; set; } 
} 

public class SecurityRole 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
} 

的下表:

User: 
    Id 
    FirstName 
    LastName 
SecurityRole: 
    Id 
    Name 
UserSecurityRole: 
    UserId 
    SecurityRoleId 

如果任何人有任何想法或可能指向我,将是巨大的正确方向

+1

所以用户只能有一个securityrole?为什么不删除这么多到多个表,只是将安全角色添加为用户的属性? – Mivaweb 2014-12-09 13:33:06

+0

我很想这样做,但我不能改变数据库结构,因为它是相当古老和很多依赖遗留的SQL脚本 – 2014-12-09 13:35:30

+0

新的数据库的时间? – Mivaweb 2014-12-09 13:37:29

回答

1

即使有只有一个记录在数据库中,如果您有UserSecurityRole之间的多对多关系,它应该像这样工作:

public class User 
{ 
    public int Id { get; set; } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 

    public List<SecurityRole> SecurityRoles { get; set; } 
} 

public class SecurityRole 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 

    public List<User> Users { get; set; } 
} 
+0

我宁愿那个用户只有一个SecurityRole,因为应该只有一个,但我不能改变DB结构 – 2014-12-09 13:34:31