2016-04-25 76 views
1

我有这些表:如何创建两个唯一/主键与实体框架

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

只需创建一个新的类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)。

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

+0

非常感谢,非常有帮助.. –