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

时间:2016-02-20 06:17:45

标签: c# entity-framework

我注意到在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; }

的DbContext:

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对象的情况下添加Book。这样做是正常的,并且在Book模型中添加AuthorId是正确的吗?我知道我也可以将一个实际的Author对象作为属性添加到我的Book模型中。只是想弄清楚我应该做什么。

1 个答案:

答案 0 :(得分:1)

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

谢谢,