如何使用Entity Framework创建两个唯一/主键

时间:2016-04-25 18:05:38

标签: c# asp.net-mvc entity-framework asp.net-mvc-4

我有这些表格:

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

public partial class book
{          
    public string book-id{ get; set; }
    public string book_name{ get; set; }
}

我想创建一个表来保存用户(id)和book(book_id)只是为了忽略重复。

例如:假设新表名为Test

id ->1
book_id->1
id ->2
book_id->2

如果我再次发送此值:

id ->1
book_id->1

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

1 个答案:

答案 0 :(得分:1)

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

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)。

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