Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Ef6 select在简单select FirstOrDefault()之后不返回任何内容_C#_Entity Framework - Fatal编程技术网

C# Ef6 select在简单select FirstOrDefault()之后不返回任何内容

C# Ef6 select在简单select FirstOrDefault()之后不返回任何内容,c#,entity-framework,C#,Entity Framework,我有一个EF6环境,它的数据访问似乎都能正常工作。有一个返回值不能计算表达式。这是第一个错误。如果我在没有FIrstOrDefault的情况下进行查询,IEnumerable将包含我要查找的1项。我哪里做错了?我有许多其他的第一个或第二个好的工作 var a = ""; var products = from p in _db.Products where p.SKU == isbn select p; foreach (var pr

我有一个EF6环境,它的数据访问似乎都能正常工作。有一个返回值不能计算表达式。这是第一个错误。如果我在没有FIrstOrDefault的情况下进行查询,IEnumerable将包含我要查找的1项。我哪里做错了?我有许多其他的第一个或第二个好的工作

var a = "";
var products = from p in _db.Products
               where p.SKU == isbn
               select p;

foreach (var productx in products)
{
    a = productx.SKU; <- productx contains the valid product
}

var product = (from p in _db.Products
               where p.SKU == isbn
               select p).FirstOrDefault(); <-- can't evaluate
这些结果在我的应用程序中为空(isbn=“9781250033697”)

针对同一数据库的其他Ling查询将生成有效数据。

使用LINQPad

var product = db.Products.FirstOrDefault(p=>p.SKU == isbn);
这很有效

/* all records */
var query = (from r in Regions select r);
query.Dump();

/* first record */
var query2 = (from r in Regions select r).FirstOrDefault();
query2.Dump();

/* "00006" record */
var query3 = (from r in Regions where r.MaestroId == "00006" select r).FirstOrDefault();
query3.Dump();

我建议获取LINQPad,并在应用程序之外测试预期结果,看看查询是否真的没有返回任何结果,或者如您所述,是否无法进行计算。硬编码您试图获取的ISBN的值,我发现通常当LINQ查询不起作用时,我传递给它的值才是罪魁祸首。。。除非EF6完全更改…

请查看使用entity framework 6的日志功能生成的SQL查询

看看这篇文章就知道怎么做了

这应该很容易

using (var context = new BlogContext()) 
{ 
    context.Database.Log = Console.Write; 

    // Your code here... 
}

我要关闭这个

谢谢你的回复


我认为在我的项目中有一个损坏的源文件。当我在控制台项目中运行查询时,它工作得非常好。

我最近遇到了类似的问题,经过3个多小时毫无结果的调试和在探查器中检查生成的SQL后,我意识到我的连接字符串中有一个不正确的数据库被指定为“初始目录”

显然,EF仍然可以组装正确的查询,但当实际数据库与初始目录不匹配时,它无法将结果映射到模型(我认为)


这是一个很小的错误,但很难找到,因为在这种情况下EF不会抛出任何异常。

两者(从产品中的p中,p.SKU==“9781250033697”选择p)。FirstOrDefault()和Products.FirstOrDefault(p=>p.SKU==“9781250033697”)我刚刚为我的问题添加了扩展。我没有东西可以试了。感谢SOFKINGIn LINQPPad,您可以查询两条记录吗?一条适用于您的应用程序,另一条适用于rebel,如果您比较字段中的值,它们是否符合您的预期?在调试时,输出窗口在尝试加载[“9781250033697”]时是否有任何消息?它们能够成功检索一些数据,所以这不太可能是由连接字符串引起的。
/* all records */
var query = (from r in Regions select r);
query.Dump();

/* first record */
var query2 = (from r in Regions select r).FirstOrDefault();
query2.Dump();

/* "00006" record */
var query3 = (from r in Regions where r.MaestroId == "00006" select r).FirstOrDefault();
query3.Dump();
using (var context = new BlogContext()) 
{ 
    context.Database.Log = Console.Write; 

    // Your code here... 
}