C# EF电动工具被自参考表弄糊涂了
我正在使用VisualStudioEntityFramework power工具从我的DB生成poco类。在我将自引用键添加到表之前,它一直有效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
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);