[英]Entity Framework returns ICollection<> with no values
我在多對多關系中有 2 個實體,我想將一個學生添加到一個類中,但是在我從查詢中收到類對象后,它顯示該屬性為空。 我見過很多類似的問題,但在這種情況下沒有答案真正幫助我。
這是我的課程:
學生實體
class Student
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual string Surname { get; set; }
public Student()
{
Classes = new HashSet<Class>();
}
public virtual ICollection<Class> Classes { get; set; }
}
類實體
class Class
{
public virtual int Id { get; set; }
public virtual string ClassName { get; set; }
public Class()
{
Students = new HashSet<Student>();
}
public virtual ICollection<Student> Students { get; set; }
}
語境
class DatabaseContext : DbContext
{
public DbSet<Student> Students { get; set; }
public DbSet<Class> Classes { get; set; }
public DatabaseContext()
{
Database.SetInitializer<DatabaseContext>(new Initializer());
}
}
初始化程序
class Initializer : DropCreateDatabaseAlways<DatabaseContext>
{
protected override void Seed(DatabaseContext context)
{
Student student1 = new Student { Id = 1, Name = "Name", Surname = "Surname" };
Class class1 = new Class { Id = 1, ClassName = "Math"};
class1.Students.Add(student1); // The Count of the collection is 1
context.Students.Add(student1);
context.Classes.Add(class1);
base.Seed(context);
}
}
現在,當我嘗試通過方法接收對象時,集合的計數為 0
public static Class GetClass(int classId)
{
using (var context = new DatabaseContext())
{
Class receivedClass = context.Classes.Find(classId); // The collection is empty, the ClassName is there, though
return receivedClass;
}
}
我想知道如何將一個對象添加到另一個對象的集合中,然后還可以使用集合中的內容檢索該對象
我認為您正在尋找.Include() 。 加載相關實體有幾種不同的策略。
using (var context = new DatabaseContext())
{
// Load all students and related classes
var classes1 = context.Classes
.Include(s => s.Students)
.ToList();
// Load one student and its related classes
var classt1 = context.Classes
.Where(s => s.Name == "someClassName")
.Include(s => s.Students)
.FirstOrDefault();
// Load all students and related classes
// using a string to specify the relationship
var classes2 = context.Classes
.Include("Students")
.ToList();
// Load one student and its related classes
// using a string to specify the relationship
var class2 = context.Classes
.Where(s => s.Name == "someName")
.Include("Students")
.FirstOrDefault();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.