获取父信息时,实体框架很奇怪

时间:2017-04-19 14:56:45

标签: linq-to-sql entity-framework-6

目前,我创建了一个这样的表:

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如何知道父母的数据?

请告知。

0 个答案:

没有答案