首先在 EF 代码中指定模型中的外键 ID

本文关键字:模型 ID EF 代码 | 更新日期: 2023-09-27 18:35:36

我注意到在EntityFramework中,如果我像下面这样设置我的模型:

作者

可以有很多本书,但一本书只能有一个作者......

作者

public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public ICollection<Book> Books { get; set; }

书:

public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }

数据库上下文:

public DbSet<Author> Authors { get; set; }
public DbSet<Book> Books { get; set; }

我注意到,当数据库生成时,表如下所示:

作者

Id
... other fields

Id
AuthorId (foreign key)
... other fields

我的问题:

我看到即使我没有在我的 Book 模型中指定外键 AuthorId,实体框架也会自动知道去创建它。此外,如果我去保存一个新的作者并用几本书填充它的 Books 属性,然后添加到上下文并保存它将自动正确保存所有内容 - 自动填写 AuthorId 外键字段。

这很好,但我想知道如果我真的将 AuthorId 外键添加到我的 Book 模型中是否没问题。原因是在我的代码中可能存在一种情况,即我想添加一本书,而实际上没有 Author 对象。这样做是否正常,并且在此处将 AuthorId 添加到 Book 模型中是正确的做法吗?我知道我也可以将实际的 Author 对象作为属性添加到我的 Book 模型中。只是想弄清楚在什么情况下我应该做什么。

首先在 EF 代码中指定模型中的外键 ID

只是针对您的问题,在书籍对象中添加 AuthoerID 是完美的解决方案。加载作者信息时,"作者"中的"保留书籍"对象可能会过度消耗内存。

谢谢