2011-09-28 103 views
1

我有一个数据库中的表指向自己,即parent_id >>类别ID。这是ER图 ER Diagram代码先用现有的数据库

我也仿照这个表像下,但它给*错误:“类别”:成员名称不能与它们的封闭类型

public class Category 
{ 
    [Key] 
    public int category_id { get; set; } 
    public string category_name { get; set; } 
    public int category_parent { get; set; } 
    public string category_desc { get; set; } 

    public virtual Category Category { get; set; } 
} 

如何我应该模拟这些表吗?

回答

1

我想你只需要改变的类别属性名称到别的东西,所以它是不一样的类名...

public virtual Category SubCategory { get; set; }

2

您必须将category_parent设置为空,并将导航属性Category设置为标量属性category_parent。尝试使用适当的命名传送。

public class Category 
{ 
    [Key] 
    [Column("category_id")] 
    public int Id { get; set; } 

    [Column("category_name")] 
    public string Name { get; set; } 

    [Column("category_parent")] 
    public int? ParentId { get; set; } 

    [Column("category_desc")] 
    public string Description { get; set; } 

    [ForeignKey("ParentId")] 
    public virtual Category ParentCategory { get; set; } 
} 
1
public class Category 
{ 
    [Key] 
    public int category_id { get; set; } 
    public string category_name { get; set; } 
    public int category_parent { get; set; } 
    public string category_desc { get; set; } 

    public int parent_category_id { get; set; } <-- ADD & setup as foreign key 
    public virtual Category ParentCategory { get; set; } <-- Change name 

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

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    base.OnModelCreating(modelBuilder); 

    modelBuilder.Entity<Category>.HasMany(cat => cat.Categories) 
      .WithRequired() 
      .HasForeignKey(cat => cat.parent_category_id);   
} 
相关问题