Как установить модифицируется вручную для виртуального свойства в EF, я уже знаю, как установить обычные свойства и коллекцию - PullRequest
0 голосов
/ 21 июня 2020

Я ищу способ установить вручную модифицируемый для виртуального свойства в Entity Framework.

В настоящее время я знаю, как установить для обычных свойств, однако когда я перемещался по свойствам внутри PropertyInfo class, я могу найти только GetMethod.IsVirtual Когда я устанавливаю для свойства значение Modifed.

 public class Student
{
    public Student()
    {
        this.Courses = new HashSet<Course>();
    }



    public int StudentID { get; set; }
    public string StudentName { get; set; }
    public DateTime? DateOfBirth { get; set; }
    public decimal Height { get; set; }
    public float Weight { get; set; }
    public byte[] RowVersion { get; set; }



    public int? GradeId { get; set; }



    public virtual Grade Grade { get; set; }



    public virtual StudentAddress Address { get; set; }
    public virtual ICollection<Course> Courses { get; set; }
}

Я хочу обновлять только поля, отмеченные как измененные. В этом примере я пытаюсь отметить ICollection как измененное с помощью entity- framework,

ctx.Entry(student).Property(x => x.Courses).IsModified = true;

Я получаю это исключение

System.ArgumentException: 'Свойство «Курсы» для типа «Студент» не является примитивным или сложным свойством. Метод Property можно использовать только с примитивными или сложными свойствами. Используйте метод ссылки или коллекции. '

1 Ответ

0 голосов
/ 21 июня 2020

Поскольку IsModifed не работает с коллекцией, он работает с отдельными свойствами

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...