asp.net mvc EF导航属性在代码中首先使用相同的名称

时间:2012-04-08 13:29:49

标签: c# entity-framework ef-code-first

我有这两个模型

    public class Group
    { 
    [Key]
    public int GroupID { get; set; }

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


public class User
{
    [Key]
    public int UserID { get; set; }

    [Required]
    [StringLength(20)]

    public string UserName { get; set; }

    [Required]
    public string Password { get; set; }   
    public virtual Group Groups { get; set; }
}

使用代码优先方法,它在生成数据库时创建Groups_GroupID作为用户表中的外键。使用displayname指定GroupID也不起作用,因为它正在创建相同的名称。那么我如何使它在用户表中生成GroupID?我正在使用EF 4.3

2 个答案:

答案 0 :(得分:3)

使用导航属性

上的ForeignKey属性
public class User
{
    [Key]
    public int UserID { get; set; }

    [Required]
    [StringLength(20)]

    public string UserName { get; set; }

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

    [ForeignKey("GroupId")]  
    public virtual Group Groups { get; set; }
}

答案 1 :(得分:0)

这有效......

public class User
{
    [Key]
    public int UserID { get; set; }

    [Required]
    [StringLength(20)]

    public string UserName { get; set; }

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

    public int GroupId { get; set; }
    public virtual Group Groups { get; set; }
}

但您可能希望这样做以处理您可能希望许多用户属于某个组和/或用户属于多个组的情况。

public class Group
    { 
    [Key]
    public int GroupID { get; set; }

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

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


public class User
{
    [Key]
    public int UserID { get; set; }

    [Required]
    [StringLength(20)]

    public string UserName { get; set; }

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

    public List<Group> Groups { get; set; }
}