2016-02-20 226 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

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