C# EF select未获取记录

C# EF select未获取记录,c#,sql-server,entity-framework,C#,Sql Server,Entity Framework,我有一个大项目,有很多数据访问正在进行中。我刚刚添加了一个新表(来自db),标准EF查询不起作用,但sql查询起作用 以下是数据访问: public Topic GetTopicByName(string name) ... name value is KboInterestingTopic { var topics = from t in _db.Topics where t.Name == name select t; return topi

我有一个大项目,有很多数据访问正在进行中。我刚刚添加了一个新表(来自db),标准EF查询不起作用,但sql查询起作用

以下是数据访问:

public Topic GetTopicByName(string name) ... name value is KboInterestingTopic
{
    var topics = from t in _db.Topics
        where t.Name == name
        select t;

    return topics.FirstOrDefault();
}
以下是有效的sql(使用与ef查询相同的键:

SELECT * FROM Topic
WHERE Name = 'KboInterestingTopic'

…如果生成的选择不正确,请查看最后一行

{SELECT 
[Extent1].[TopicID] AS [TopicID], 
[Extent1].[TopicGUID] AS [TopicGUID], 
[Extent1].[Name] AS [Name], 
[Extent1].[Title] AS [Title], 
[Extent1].[Description] AS [Description], 
[Extent1].[SETitle] AS [SETitle], 
[Extent1].[SEDescription] AS [SEDescription], 
[Extent1].[SEKeywords] AS [SEKeywords], 
[Extent1].[Password] AS [Password], 
[Extent1].[RequiresDisclaimer] AS [RequiresDisclaimer], 
[Extent1].[XmlPackage] AS [XmlPackage], 
[Extent1].[ExtensionData] AS [ExtensionData], 
[Extent1].[ShowInSiteMap] AS [ShowInSiteMap], 
[Extent1].[SkinID] AS [SkinID], 
[Extent1].[HTMLOk] AS [HTMLOk], 
[Extent1].[Deleted] AS [Deleted], 
[Extent1].[DisplayOrder] AS [DisplayOrder], 
[Extent1].[CreatedOn] AS [CreatedOn], 
[Extent1].[StoreID] AS [StoreID], 
[Extent1].[Published] AS [Published], 
[Extent1].[UpdatedOn] AS [UpdatedOn], 
[Extent1].[IsFrequent] AS [IsFrequent]
FROM [dbo].[Topic] AS [Extent1]
WHERE [Extent1].[Name] = @p__linq__0}
我不明白,@p\u linq\u 0=N'KboInterestingTopic'

试试这个

return _db.Topics.FirstOrDefault(
    s => s.Name.Equals(name, StringComparison.OrdinalIgnoreCase)
);
试试这个

return _db.Topics.FirstOrDefault(
    s => s.Name.Equals(name, StringComparison.OrdinalIgnoreCase)
);
感觉很傻

在测试系统上工作-指向没有测试数据的生产数据库。它按预期工作

谢谢你的回复

雅培觉得自己很笨

在测试系统上工作-指向没有测试数据的生产数据库。它按预期工作

谢谢你的回复


Abbott

当你说它不起作用时,你是什么意思?你有错误吗?代码返回时没有错误,而你没有记录吗?就像Christos说的那样-因为你使用FirstOrDefault()它可能返回Null吗?一步一步地进行。在断点处放置并逐步检查_db,以确保它已实例化并正确连接到您的db。Master-为了达到程序中的这一点,db已被正确地查询了两次。当您说它不工作时,您的意思是什么?是否有任何错误?代码是否返回时没有错误,并且没有记录?正如Christos所说的-由于您使用的是FirstOrDefault(),它是否可能返回Null?一步一步地进行。在断点处放置并逐步检查_db,以确保它已实例化并正确连接到您的db。Master-为了在程序中达到该点,db已被正确地查询了两次。看起来生成的select是错误的,请看最后一行??我尝试了您的查询,得到了相同的结果。这是更重要的基本的(愚蠢的)。可能在我这方面。我有100个其他的ef查询在这个项目中工作。看起来生成的select是错误的,看最后一行??我尝试了你的查询,得到了相同的结果。这是一些更基本的(愚蠢的)。可能在我这方面。我有100个其他的ef查询在这个项目中工作。