У меня есть следующий класс в моем проекте
public class ProductCategory
{
public virtual Guid Id { get; set; }
public virtual string UrlSlug { get; set; }
public virtual string Title { get; set; }
public virtual bool IsActive { get; set; }
public virtual IList<Product> Products { get; set; }
public virtual ProductCategory Parent { get; set; }
public virtual IList<ProductCategory> Categories { get; set; }
}
моя таблица базы данных выглядит следующим образом:
CREATE TABLE [dbo].[ProductCategory](
[Id] [uniqueidentifier] NOT NULL,
[UrlSlug] [nvarchar](255) NULL,
[Title] [nvarchar](255) NULL,
[IsActive] [bit] NULL,
[ProductCategory_id] [uniqueidentifier] NULL -- this is the parent category id
)
Я пытаюсь разрешить категории быть дочерней по отношению к другой, и, очевидно, родитель может иметь несколько категорий.
У меня проблемы с настройкой AutoPersistenceModel. Это то, что у меня есть для моего картирования.
.ForTypesThatDeriveFrom(map =>
{
map.HasMany(productCategory => productCategory.ProductCategories).WithForeignKeyConstraintName("ProductCategory_id");
map.HasOne(productCategory => productCategory.ParentCategory).WithForeignKey("ProductCategory_id");
});
Я пробовал несколько разных вещей, которые просто не сработали для меня. Кажется, правильно сопоставить HasMany. Но HasOne оказывается самим собой, а не правильным родительским объектом, или ничем (нулевым), когда идентификатор ParentCategory_id в базе данных равен нулю