EF电动工具被自参考表混淆
本文关键字:参考 电动工具 EF | 更新日期: 2023-09-27 18:26:59
我正在使用Visual Studio实体框架的强大工具从我的数据库中生成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])
现在我的项目类和以前一样(它不包含新的parentItemId字段):
public partial class Item
{
public Item()
{
}
public int Id { get; set; }
public string Name { get; set; }
}
而且这些强大的工具似乎根本无法在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; }
}
所需的映射类:
this.HasOptional(x => x.Parent)
.WithMany(x => x.Children)
.HasForeignKey(x => x.ParentId)
.WillCascadeOnDelete(false);
这似乎奏效了。我不需要任何ProxyCreation或CreateObject命令。。。最大的问题是,我不能再使用EF电源工具来生成任何新的Poco类了。