实体框架-链接表表示
本文关键字:表示 链接表 框架 实体 | 更新日期: 2023-09-27 18:13:06
我是实体框架的新手。我使用数据库第一方法,我不自动生成实体文件。我有三个表,User
, Database
和UserDatabase
。表UserDatabase
与User
和Database
都有多对多关系。我不知道如何在我们班建立这种关系。
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; }
}