EF Core добавляет объект обнуляет свойство навигации
Я пытаюсь добавить объект Drink через DbContext, но после добавления напитка с использованием контекста свойство Brand становится пустым. Что может быть причиной этого?
(Игнорировать метод двойного добавления _context, был отладкой)
Перед добавлением напитка После добавления напитка
Модели:
public class Product
{
[Key]
public string Id { get; set; }
public string Name { get; set; }
}
public class Drink : Product
{
public Brand Brand { get; set; }
public Category Category { get; set; }
public ICollection<DrinkTag> DrinkTags { get; set; }
}
public class Brand
{
[Key]
public string Name { get; set; }
public ICollection<Drink> Drinks { get; set; }
}
public class Category
{
[Key]
public string Name { get; set; }
public ICollection<Drink> Drinks { get; set; }
}
public class Tag
{
[Key]
public string Name { get; set; }
public ICollection<Drink> Drinks { get; set; }
}
public class DrinkTag
{
public string DrinkId { get; set; }
public Drink Drink { get; set; }
public string TagId { get; set; }
public Tag Tag { get; set; }
}
1 ответ
Решение
Ваша модель напитка:
public class Drink : Product
{
public int BrandId { get; set; }
// Navigational properties
public Brand Brand { get; set; }
public Category Category { get; set; }
public ICollection<DrinkTag> DrinkTags { get; set; }
}
Когда вы добавляете новый напиток, укажите только BrandId:
var myDrink = new Drink();
myDrink.BrandId = 2;
// ... and so on
Кроме того, EF Core не загружает связанные свойства автоматически. Поэтому, если вы хотите, чтобы бренд был загружен, вам нужно сделать это вручную:
var data = myContext.Drinks
.Include(p => p.Brand)
.FirstOrDefault(p => p.Id == yourId);