C# 如何使用实体框架创建两个唯一/主键

C# 如何使用实体框架创建两个唯一/主键,c#,asp.net-mvc,entity-framework,asp.net-mvc-4,C#,Asp.net Mvc,Entity Framework,Asp.net Mvc 4,我有这些桌子: public partial class user { public string Id { get; set; } public string name{ get; set; } } 及 我希望创建一个表来保存用户(id)和book(book_id),但忽略重复 例如:假设新表名为Test: id ->1 book_id->1 id ->2 book_id->2 如果我再次发送此值: id ->1 book

我有这些桌子:

public partial class user
{           
    public string Id { get; set; }
    public string name{ get; set; }
}

我希望创建一个表来保存用户(id)和book(book_id),但忽略重复

例如:假设新表名为
Test

id ->1
book_id->1
id ->2
book_id->2
如果我再次发送此值:

id ->1
book_id->1

它不应该将它们添加到数据库中,那么如何定义呢?新类(测试)属性/约束应该是什么?谢谢

只需创建一个新类
测试
,如下所示:

public class Test 
{
    [Key(Order=0)]
    public int UserId { get; set; }

    [Key(Order=1)]
    public int BookId { get; set; }

    public User User { get; set; }

    public Book Book { get; set; }
}
通过这样做,EF将在数据库中创建一个名为
Test
的表。该表不允许重复,因为我们使用复合键(UserId,BookId)

之后,您需要在
Book
User
中添加导航属性
public-ICollection-Tests{get;set;}

public class Test 
{
    [Key(Order=0)]
    public int UserId { get; set; }

    [Key(Order=1)]
    public int BookId { get; set; }

    public User User { get; set; }

    public Book Book { get; set; }
}