2016-02-20 167 views
0

模型指定的外键标识我注意到的EntityFramework如果我安装我的模型如下所示:在EF代码首先

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

作者

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 

我的问题:

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

这很好,但我想知道如果我真的将AuthorId外键添加到我的书籍模型中是否会好。原因是因为在我的代码中,可能会出现一种情况,我想先添加一本书,但实际上没有Author对象。这样做是否正常,并且在Book模型中添加AuthorId是否正确?我知道我也可以将一个实际的作者对象作为一个属性添加到我的Book模型中。试图弄清楚在什么情况下我应该做什么。

回答

1

就你的问题而言,在书籍对象中添加AuthoerID是完美的解决方案。当作者加载作者信息时,作者可能会过度占用内存。

感谢,

+0

谢谢,我开始问这个问题,没有什么不妥添加过AuthorID场我的书模后到现在实现。另外,如果我希望在从数据库中提取时绑定整个事物,我也可以将一个Author对象添加到我的Book模型中。 –

+0

太棒了...太棒了... –