C# EF电动工具被自参考表弄糊涂了

C# EF电动工具被自参考表弄糊涂了,c#,visual-studio-2010,entity-framework,poco,C#,Visual Studio 2010,Entity Framework,Poco,我正在使用VisualStudioEntityFramework power工具从我的DB生成poco类。在我将自引用键添加到表之前,它一直有效 CREATE TABLE [dbo].[Item]( [Id] [int] IDENTITY(1,1) NOT NULL, [Name] [nvarchar](100) NOT NULL, [parentItemId] [int] NULL, ... ALTER TABLE [dbo].[Item] WITH CHECK ADD CONST

我正在使用VisualStudioEntityFramework power工具从我的DB生成poco类。在我将自引用键添加到表之前,它一直有效

CREATE TABLE [dbo].[Item](
  [Id] [int] IDENTITY(1,1) NOT NULL,
  [Name] [nvarchar](100) NOT NULL,
  [parentItemId] [int] NULL,
...
ALTER TABLE [dbo].[Item] WITH CHECK ADD CONSTRAINT [FK_Item_Item] FOREIGN KEY([parentItemId])
现在我的item类与以前相同(它不包含新的parentItemId字段):

而且似乎powertools在dbContext类中根本无法生成任何代码

使用这种DB结构是否超出了EF


如果是,那么最好的解决方案是什么?我能想到的唯一方法是添加另一个表ItemItem,并创建多对多关系(这太过分了,但是…

我在其中找不到一些类。我确实是用另一个来工作的。Item类最终为:

public partial class Item
 ...
    public virtual int? ParentId { get; set; }
    public virtual Item Parent { get; set; }
    public virtual ICollection<Item> Children { get; set; }
}

这似乎奏效了。我不需要任何ProxyCreation或CreateObject命令。。。最大的问题是我不能再使用EF power tools来生成任何新的Poco类。

你看过这篇帖子吗:?我没见过。我现在会检查并很快更新。ThanksI找不到EntityConfiguration类型,因此我改用EntityTypeConfiguration和一个新的映射:this.Property(t=>t.Parent.Id).HasColumnName(“parentItemId”);但我得到一个错误:“他类型‘DataAccess.Models.Item’已经被配置为实体类型。它不能被重新配置为复杂类型。”
public partial class Item
 ...
    public virtual int? ParentId { get; set; }
    public virtual Item Parent { get; set; }
    public virtual ICollection<Item> Children { get; set; }
}
this.HasOptional(x => x.Parent)
    .WithMany(x => x.Children)
    .HasForeignKey(x => x.ParentId)
    .WillCascadeOnDelete(false);