【发布时间】:2020-03-07 21:51:30
【问题描述】:
假设我有 2 个表:Books 和 Authors。它们表示为以下 EF 模型:
class Book {
Guid Id { get; set; }
string BookName { get; set; }
Author Author { get; set; }
}
class Author {
Guid Id { get; set; }
string Name { get; set; }
}
两个实体都有自动生成的 Guid Id,即在插入数据库之前,在客户端站点上生成 Id(这是 npgsql 的默认行为) Book 表具有 Author 表的外键。 所以,可以说我已经有几个作者了。我想添加一些作者的新书。这是一个网络应用程序,所以我将存储库注入到控制器中。在插入新书之前,我加载(只读,即 AsNoTracking 以提高性能)可用作者,找到所需的作者并将该作者分配给新创建的书的 Author 属性。在 DbContext.SaveChanges 我得到一个错误,说给定的 Id 已经存在。我怀疑 EF 正在尝试添加具有给定 ID 的新作者(即使它已经存在于数据库中),因为作者实体被加载为 NoTracking。
有没有办法加载外键,因为没有跟踪来创建新实体?
谢谢
【问题讨论】:
标签: c# entity-framework entity-framework-core