2
我使用的EntityFramework 4.3.1,并试图当我运行查询像这样运行实体框架查询结果
Context.Set<KullaniciYetkiView>().Where(y => y.KullaniciId == kullaniciId && y.YetkiKod == yetkiKod)
查询并返回115个记录的预期。但是当我看着记录时,他们都是一样的。因此,我从Profiler听取查询,看看我缺少什么,查看下面的查询,并从管理工作室返回115条不同的记录。
exec sp_executesql N'SELECT
[Extent1].[YetkiKod] AS [YetkiKod],
[Extent1].[KullaniciId] AS [KullaniciId],
[Extent1].[LokasyonId] AS [LokasyonId],
[Extent1].[YetkiId] AS [YetkiId],
[Extent1].[HiyerarsikKod] AS [HiyerarsikKod],
[Extent1].[LokasyonSeviye] AS [LokasyonSeviye],
[Extent1].[Yetkili] AS [Yetkili],
[Extent1].[Engelli] AS [Engelli],
[Extent1].[LokasyonEngelli] AS [LokasyonEngelli]
FROM [dbo].[sayKullaniciYetkiView] AS [Extent1]
WHERE ([Extent1].[KullaniciId] = @p__linq__0) AND ([Extent1].[YetkiKod] = @p__linq__1)',N'@p__linq__0 uniqueidentifier,@p__linq__1 nvarchar(4000)',@p__linq__0='283CCB41-3BDF-4BEF-BD26-E46191CA069D',@p__linq__1=N'FIN.SATISFATURA.E'
我认为这个问题是在EF为了证明这一点我像这样运行
var yetkiler1 = Context.Set<KullaniciYetkiView>().Where(y => y.KullaniciId == kullaniciId && y.YetkiKod == yetkiKod).Distinct().ToList();
var yetkiler2 = Context.Set<KullaniciYetkiView>().Where(y => y.KullaniciId == kullaniciId && y.YetkiKod == yetkiKod).ToList().Distinct();
首先查询返回115行,第二个返回1.
代码我错过了什么?
在此先感谢。
这个KullaniciId列似乎有点可疑。生成的查询将其视为唯一ID,但它会返回115条记录? –
这可能是您的模型配置有问题。检查出http://stackoverflow.com/a/7955773/1099260。 –
是的,它必须返回115条记录。 –