NUNIT 测试用例,用于在实体框架核心中添加和删除具有多对多关系的表



我有一个类似

Class Author{
int AuthorId;
string Nmae;
}
Class book {
int bookid;
Author Author;
}

现在我要在书中添加一个新条目。

如果我添加book.Author.Add(newAuthor)newAuthor会自动添加到Authors表中吗?

还是我应该写这个?

dbcontext.Author.Add(author)

以及

book.Author.Add(newAuthor)

当我运行单元测试时,它出错Attempted to update or delete an entity that does not exist in the store.

有一次我写了dbcontext.Author.Add(author),没有错误。

我尝试的另一种方法是在[SetUp],我在Authors表中添加了作者。然后,我将这位作者添加到books表中。但后来我得到了

无法跟踪实体类型为"作者"的实例,因为已跟踪具有相同 {'AuthorId'} 键值的另一个实例。附加现有实体时,请确保仅附加一个具有给定键值的实体实例。考虑使用"DbContextOptionsBuilder.EnableSensitiveDataLogging"来查看冲突的键值。

谁能帮我解决这个问题?

我有同样的问题

无法跟踪实体类型为"成员"的实例,因为已跟踪键值为"{Id: 1}"的另一个实例。附加现有实体时,请确保仅附加一个具有给定键值的实体实例。

很抱歉延迟更新。 我纠正了问题。 类作者 { int AuthorId; 弦 Nmae;} 课本 { int bookid; 作者作者;}

在我添加数据库上下文之前。图书添加(图书(

我添加了数据库上下文。作者.添加(新作者(

它无需创建任何其他条目即可正常工作,因为它只有 Id 作为外键,并且作者实体没有添加,因为它是关系实体。

最新更新