0

我有这两个模型

    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 作为用户表中的外键。使用显示名称指定 GroupID 也不起作用,因为它正在创建相同的名称。那么我将如何让它在用户表中生成 GroupID?我正在使用 EF 4.3

4

2 回答 2

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; }
}
于 2012-04-08T13:35:31.370 回答
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; }
}
于 2013-03-20T00:29:04.037 回答