Обновление "один ко многим" в EF Core с объектом значения - PullRequest
0 голосов
/ 02 августа 2020

У меня 3 класса, как вы видите:

public class car
{
        public int Id { set; get; }
        public string Name { set; get; }
        public List<CarTest> CarTest { get; set; }

        public car(string name, int id, List<CarTest> carTests)
        {
            Id = id;
            Name = name;
           
            CarTest = carTests;
        }

        public car()
        {
        }
}

public class CarTest
{
      public OVTest OV { get; set; }
      public string CarOV { get; set; }
}

public class OVTest
{
      public string Name { get; set; }
}

Я хочу отредактировать свое значение, как вы видите:

static void Main(string[] args)
{
    myctx myc = new myctx();
    
    var cartests = new List<CarTest>();
    var cartest = new CarTest();

    var OV = new OVTest();
    OV.Name = "editedName";
    cartest.OV = OV;
    cartest.CarOV = "2OV";
    cartests.Add(cartest);
    var editcar = new car("ee5155fe",2, cartests);
    myc.ChangeTracker.TrackGraph(editcar, e =>e.Entry.State = EntityState.Modified);

    myc.SaveChanges();

    Console.ReadLine();
}

Но я получаю эту ошибку:

System.InvalidOperationException: 'Свойство CarTestId для типа сущности OVTest является частью ключа и поэтому не может быть изменено или помечено как измененное. Чтобы изменить принципала существующего объекта с помощью идентифицирующего внешнего ключа, сначала удалите зависимого и вызовите SaveChanges, затем свяжите зависимого с новым участником. '

Это моя конфигурация:

public class CarConfig : IEntityTypeConfiguration<car>
{
        public void Configure(EntityTypeBuilder<car> builder)
        {     
            builder.OwnsMany(u => u.CarTest);
            builder.OwnsMany(u => u.CarTest).OwnsOne(c=>c.OV);
        }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...