#c# #sql #entity-framework #ef-code-first
#c# #sql #entity-framework #ef-code-first
Вопрос:
я пытаюсь создать категорию, которая может содержать родительскую категорию и дочерние категории. Но по какой-то причине он не будет отображать его прямо в моей базе данных.
Это мой класс:
public class Category:EntityBase
{
public Guid? ParentCategoryId { get; set; }
public virtual Category ParentCategory { get; set; }
public virtual List<Category> ChildCategories { get; set; }
public List<ProductBase> Products { get; set; }
public string Name { get; set; }
public int Position { get; set; }
}
Поскольку entitybase является абстрактным классом с идентификатором в качестве guid и некоторой другой информацией.
Мой modelbuilder выглядит следующим образом:
builder.Entity<Category>()
.HasOptional(i => i.ParentCategory)
.WithMany(i => i.ChildCategories)
.HasForeignKey(i => i.ParentCategoryId);
Это решение, которое я нашел в других сообщениях SO. но это создает только одну таблицу в моей базе данных, и она выглядит следующим образом:
Комментарии:
1. Это кажется правильным. Чего бы вы ожидали?
2. какая-то ссылка на мой список продуктов, а также какая-то ссылка на дочерние категории
3. Ссылка на дочерние категории автономна в таблице категорий (вы должны увидеть fk для себя). У вас также должна быть категория продукта с полем «CategoryID» в качестве Fk для таблицы категорий
4. хорошо, я нашел категорию fk в моей таблице продуктов, но не ограничит ли это ее, чтобы один продукт мог быть только в одной категории
5. Да, верно. Но это вы объявили его общедоступным Guid? ParentCategoryID { get; set; } общедоступная виртуальная категория ParentCategory { get; set; }’. Вам следует использовать список, если вам нужно несколько родительских элементов.