簡體   English   中英

如何插入多個具有相同導航屬性值的實體?

[英]How to insert multiple entities that have same value for navigation property?

我有這樣的POCO:

public class Student
{
    public int StudentId { get; set; }
    public string Name { get; set; }
    public Level Level { get; set; }
}

public class Level
{
    public int LevelId { get; set; }
    public string Name { get; set; }
    public ICollection<Student> Students { get; set; }


}

這是我將所有學生保存在一個級別中的方法:

public void InsertAllFirstLevelStudents(List<Student> students)
{
    // Here all students belong to the same level
    var level = Utils.GetFirstLevel();

    students.ForEach(s => s.Level = level);
    context.Students.AddRange(students);
    context.SaveChanges();
}

但是在保存時,出現此錯誤:

實體對象不能由IEntityChangeTracker的多個實例引用

當我分別獲取相同的級別時: context.Levels.FirstOrDefault(l => l.Name ==“ First”); ,沒有問題,但是,當然,它然后執行單獨的數據庫查詢,這是我要避免的查詢。

為此可以做什么?

public class Student
{
    public int StudentId { get; set; }
    public LevelId {get; set;}

    public string Name { get; set; }
    [ForeignKey("LevelId")]
    public Level Level { get; set; }
}

接着

students.ForEach(s => s.LevelId = level.LevelId);

您可以將學生添加到級別的“ Students集合中。

// Here all students belong to the same level
var level = Utils.GetFirstLevel();

foreach (var student in students) {
    level.Students.Add(student);
}
context.Students.AddRange(students); // Probably not necessary
context.SaveChanges();

暫無
暫無

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

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