Linq to sql 获取父信息时,实体框架工作异常

Linq to sql 获取父信息时,实体框架工作异常,linq-to-sql,entity-framework-6,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 =

目前,我创建了一个如下表:

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
ModuleID    ModuleName    ParentID
  1         ParentName       NULL
  2         ChildName         1
SELECT 
    [Extent1].[ModuleID] AS [ModuleID], 
    [Extent1].[ModuleName] AS [ModuleName], 
    [Extent1].[ParentID] AS [ParentID], 
    FROM [dbo].[AM_Module] AS [Extent1]
    WHERE 1 = [Extent1].[ParentID]
With ParentID包含ModuleID的父项

我有两排像这样:

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
ModuleID    ModuleName    ParentID
  1         ParentName       NULL
  2         ChildName         1
SELECT 
    [Extent1].[ModuleID] AS [ModuleID], 
    [Extent1].[ModuleName] AS [ModuleName], 
    [Extent1].[ParentID] AS [ParentID], 
    FROM [dbo].[AM_Module] AS [Extent1]
    WHERE 1 = [Extent1].[ParentID]
现在,在我的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返回1行

但当我检查w2[0].AM_Module1(与自身的关系)时,我也有ModuleName的parent值

为什么会这样?SQL只返回了一行。EF如何知道家长的数据


请告知。

LINQ to SQL不用于EF,它将用于LINQ to Entities:您是否选择了错误的标记?您对EF的实体类型的定义是什么?先开始模型还是代码?有两个潜在的关联属性与上述定义(对父项来说是单数,对子项来说是集合):您使用的关联属性取决于实体定义。嗨,Richard,我是由ReverseeEngineerCodeFirst(电动工具)为EF生成的,可能是延迟加载效应(您的
父项
属性
虚拟
?)。或者,如果父实体已加载(由
DbContext
跟踪)。请在问题中包括.NET类型
模块
。还有什么类型是工作单元?(我们可能需要重新创建。)