实体框架-链接表表示

本文关键字:表示 链接表 框架 实体 | 更新日期: 2023-09-27 18:13:06

我是实体框架的新手。我使用数据库第一方法,我不自动生成实体文件。我有三个表,User, DatabaseUserDatabase。表UserDatabaseUserDatabase都有多对多关系。我不知道如何在我们班建立这种关系。

public class Database
{
    [Key]
    public int DatabaseId { get; set; }
    public string DatabaseName { get; set; }
}
public class User
{
    [Key]
    public int? UserID { get; set; }
    [Required]
    public string Name{ get; set; }
}
public class UserDatabase
{
    [Key]
    public int UserID { get; set; }
    [ForeignKey("UserID")]
    public virtual User Users{ get; set; }
    public int DatabaseID { get; set; }
    [ForeignKey("DatabaseID")]
    public virtual Database Database { get; set; }
}

这是我当前的代码。如果我为每个用户添加一个数据库,它工作得很好。但如果我加上多个,就会抛出违反多重性约束的错误。请帮助。

实体框架-链接表表示

我发现了这个错误。在链接表"UserDatabase"我提到UserID为主键,这就是为什么我不能添加多个记录。它应该是一个复合键,我已经将用户和数据库标记为键,并给出了顺序。我把它改成

public class UserDatabase
{
    [Key, Column(Order=0)]
    public int UserID { get; set; }
    [ForeignKey("UserID")]
    public virtual User Users{ get; set; }
    [Key, Column(Order=1)]
    public int DatabaseID { get; set; }
    [ForeignKey("DatabaseID")]
    public virtual Database Database { get; set; }
}

试着修改你的UserDatabase:

public class UserDatabase
{
    [ForeignKey("Users")]
    public int UserID { get; set; }
    [ForeignKey("Database")]
    public int DatabaseID { get; set; }
    public virtual User Users{ get; set; }
    public virtual Database Database { get; set; }
}