我有以下实体:
public class Module
{
public Module()
{
SubModules = new List<Module>();
}
public int Id { get; set; }
public string Title { get; set; }
public string Action { get; set; }
public string Controller { get; set; }
public string Icon { get; set; }
public List<Module> SubModules { get; set; }
}
其中,当通过 Code First 初始化时,会生成下表 Schema:
CREATE TABLE [dbo].[Modules](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Title] [nvarchar](max) NULL,
[Action] [nvarchar](max) NULL,
[Controller] [nvarchar](max) NULL,
[Icon] [nvarchar](max) NULL,
[Module_Id] [int] NULL,
CONSTRAINT [PK_dbo.Modules] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF)
)
GO
ALTER TABLE [dbo].[Modules] WITH CHECK ADD CONSTRAINT [FK_dbo.Modules_dbo.Modules_Module_Id] FOREIGN KEY([Module_Id])
REFERENCES [dbo].[Modules] ([Id])
GO
ALTER TABLE [dbo].[Modules] CHECK CONSTRAINT [FK_dbo.Modules_dbo.Modules_Module_Id]
GO
问题是,当我用一个父模块(Module_Id 为 null)和两个子模块(父模块的 Module_Id)填充此表并查询 DBContext 的模块集合时,我得到了父模块及其子模块的集合正确,但我也得到了自己返回的子模块。
所以 DbContext 中的 Modules 集合看起来有点像这样:
ParentModule
---Child Module
---Child Module
Child Module
Child Module
我需要的是让这两个子模块本身不作为模块返回,而仅作为父模块的子模块返回。
希望我已经解释清楚了。