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类型模块
。还有什么类型是工作单元?(我们可能需要重新创建。)