我是Entity Framework的新手。我使用数据库第一种方法,我不会自动生成实体文件。我有3个表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; }
}
这是我目前的代码。如果我为每个用户添加一个数据库,它工作正常。但是如果我添加多个,它会抛出多重约束违规错误。请帮忙。
答案 0 :(得分:0)
我发现了这个错误。在链接表“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; }
}
答案 1 :(得分:0)
尝试将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; }
}