【问题标题】:I would like to help implement a self-relationship in Code First我想帮助在 Code First 中实现自我关系
【发布时间】:2012-03-22 04:57:46
【问题描述】:

我想帮助实现如下所示的自我关系:

我有一个包含子类别列表的类类别。将如何使用 CODE FIRST 类及其映射?

【问题讨论】:

    标签: .net entity-framework c#-4.0 ef-code-first


    【解决方案1】:

    实体

    public class Category : Entity
    {
        public int Id { get; set; }
    
        public string Name { get; set; }
    
        public int? ParentId { get; set; }
    
        public virtual Category ParentCategory { get; set; }
    
        public virtual ICollection<Category> SubCategories { get; set; }
    }
    

    还有映射

    public class CategoryMap : EntityTypeConfiguration<Category>
    {
        public CategoryMap()
        {
            HasKey(category => category.Id);
    
            Property(category => category.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
    
            HasOptional(category => category.ParentCategory)
                .WithMany(category => category.SubCategories)
                .HasForeignKey(category => category.ParentId);
        }
    }
    

    【讨论】:

    • @ViniciusSaeta 你有Category 的现有表吗?
    【解决方案2】:

    我相信您可以在 Category 类中创建一个属性。

    public virtual IEnumerable<Category> Categories {get;set;}
    

    【讨论】:

    • 确保所有属性都是虚拟的。
    • 什么时候出错?在创作还是使用?如果使用,请在您的上下文中尝试:context.ContextOptions.ProxyCreationEnabled = true;
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-15
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多