簡體   English   中英

插入后,Navigation屬性返回null

[英]Navigation property returns null after inserting

我已將我的應用程序從EF4遷移到EF5。 我使用以下代碼與先前版本獲取新添加項目的相關實體。

Student s = new Student();
s.Name = _name;
s.ClassID = _cID;

db.Students.Add(s);
db.SaveChanges();

ClassRoom c = s.ClassRoom;

所以我曾經把特定的類實體帶到c 但是現在s.ClassRoom返回null。

如何為學生獲得ClassRoom實體? 我必須使用db.ClassRooms.FirstOrDefault(....)嗎?

問題是您尚未加載導航屬性。

您可以使用:

db.Students.Include("ClassRoom")

要么

using System.Data.Entity;
db.Students.Include(s=>s.ClassRoom)

急切地加載導航屬性

另一個選項是通過使用virtual標記導航屬性來啟用延遲加載。 我個人更喜歡前者(急切加載),因為它鼓勵更高性能的代碼。

另請查看我的導航屬性文章,我在開始時談論加載http://blog.staticvoid.co.nz/2012/7/17/entity_framework-navigation_property_basics_with_code_first

您的代碼應如下所示:

Student s = new Student();
s.Name = _name;
s.ClassID = _cID;

db.Students.Add(s);
db.SaveChanges();

//reload the entity from the DB with its associated nav property
s = db.Students.Include(s=>s.ClassRoom).Single(st=>st.StudentId == s.StudentId);
ClassRoom c = s.ClassRoom;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM