这是插入到一个多到多台的好做法?
user = new User
{
Id = userId,
UserName = username,
FirstName = firstName,
LastName = lastName,
UsersBooks = new List<UsersBooks>()
};
book = new Book
{
Title = "randomTitle2",
Genre = "randomGenre2",
UsersBooks = new List<UsersBooks>()
};
usersBooks = new UsersBooks
{
User = user,
Book = book
};
而在最后,我把它添加到上下文
actContext.UsersBooks.AddAsync(usersBooks);
所以我在每个班的这UsersBooks收集 - 用户的书。一个用户可以有许多书籍和一本书可以被很多用户获取(哈利·波特的副本,让我们说)。所以我应该每次都创建一个新的
随着EF6
你有两个选择:
1)由于EF6
支持许多一对多的关系外的开箱你可以用该功能去(即在由vasily.sib注释说明)。
优点:你的模型和代码看起来更清洁,而不过量模型(UsersBooks
)
缺点:它不灵活的方式。在未来,你可能需要额外的属性添加到关系表。这种方法不会允许它
2)处理许多一对多的关系,有两个一个一对多的关系基本概念(像你这样)
优点:你可以添加任何额外的属性,以这种关系。它是一种灵活的方法
缺点:你的代码始终应该多一个模型(UsersBooks
)工作
所以,如果你处理一个简单的场景就够了,那么你就可以用第一种方法去。否则,你需要考虑的第二位。
顺便说一句,目前,EF core
不支持多到许多关系
你并不需要直接插入UsersBooks
表。
一旦你更新users
的book
列表,或在books
的user
列表中,关系(UsersBooks
)将自动更新。
其实,你并不需要声明一个UsersBooks
型号为许多一对多的关系。如果你声明ICollection<User>
在Book
的Code First模型,并在ICollection<Book>
模型申报User
,该UsersBooks
表将通过实体框架自动数据库中创建。