【发布时间】:2017-06-24 12:11:36
【问题描述】:
我有一个这样的数据模型:
文章
*Id | int
... |
活动
*ArticleId | int
*ActivityType | nvarchar(50)
*AccountId | nvarchar(50)
... |
在上面,star (*) 列是主键,ArticleId 是文章 id 的外键。
我首先使用 Entity Framework 6 数据库。当我在下面运行代码时,结果大部分时间都不相等!结果是可重复的。
查询 A:
var aCount1 = db.Article.Include("Activity")
.First(x => x.Id == 1).Activity.Count;
查询 B:
var aCount2 = db.Activity.First(x => x.ArticleId == 1).Count();
我使用了延迟加载和急切加载,但没有任何改变。
实体框架查询:
查询 A:
SELECT
[Extent1].[ActivityType] AS [ActivityType],
[Extent1].[AccountId] AS [AccountId],
[Extent1].[ArticleId] AS [ArticleId]
FROM
[dbo].[Activity] AS [Extent1]
WHERE
[Extent1].[ArticleId] = @EntityKeyValue1
查询 B:
SELECT
[GroupBy1].[A1] AS [C1]
FROM
(SELECT
COUNT(1) AS [A1]
FROM
[dbo].[Activity] AS [Extent1]
WHERE
([Extent1].[ArticleId] = @p__linq__0)) AS [GroupBy1]
当我从 SSMS 执行上述查询时,结果相同,但在 EF 上获取的对象不正确。
【问题讨论】:
-
对此问题进行简短、完整的复制。您可能会发现问题所在。如果没有,请在此处发布。
-
我不清楚你正在经历什么行为,你期待什么,它们之间有什么区别。
标签: c# sql-server entity-framework