目前,我创建了一个这样的表:
CREATE TABLE [dbo].[AM_Module](
[ModuleID] [int] IDENTITY(1,1) NOT NULL,
[ModuleName] [nvarchar](100) NULL,
[ParentID] [int] NULL,
CONSTRAINT [PK_AM_ModuleID] PRIMARY KEY CLUSTERED
(
[ModuleID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[AM_Module] WITH CHECK ADD CONSTRAINT [FK_AM_Module_AM_Module_ParentID] FOREIGN KEY([ParentID])
REFERENCES [dbo].[AM_Module] ([ModuleID])
GO
ALTER TABLE [dbo].[AM_Module] CHECK CONSTRAINT [FK_AM_Module_AM_Module_ParentID]
GO
使用ParentID包含ModuleID的父级。
我有这样的2行:
ModuleID ModuleName ParentID
1 ParentName NULL
2 ChildName 1
现在,在我的EF中,我运行LinQ to SQL:
var q2 = from a in unitOfWork.RepositoryAsync<AM_Module>().Queryable() where a.ParentID == 1 select a;
var w2 = q2.ToList();
当我通过SQL事件探查器检查时,我看到查询将被解析为:
SELECT
[Extent1].[ModuleID] AS [ModuleID],
[Extent1].[ModuleName] AS [ModuleName],
[Extent1].[ParentID] AS [ParentID],
FROM [dbo].[AM_Module] AS [Extent1]
WHERE 1 = [Extent1].[ParentID]
SQL返回1行。
但是当我检查w2 [0] .AM_Module1(与自身的关系)时,我的父ID值也是。
为什么会这样? SQL只返回一行。 EF如何知道父母的数据?
请告知。