Select 简单。数据选择特定列

Select 简单。数据选择特定列,select,simple.data,Select,Simple.data,我对Simple.Data进行了调用,我想在其中限制要返回的列。但是我遇到了问题 这很好: var db = Database.Open(); var questionIdRow = db.Question.FindByFriendlyId(friendlyId); if (questionIdRow == null) return Guid.Empty; return questionIdRow.QuestionId; 但是,以下操作不起作用(我得到一个Simple.Data.unso

我对Simple.Data进行了调用,我想在其中限制要返回的列。但是我遇到了问题

这很好:

var db = Database.Open();

var questionIdRow = db.Question.FindByFriendlyId(friendlyId);

if (questionIdRow == null) return Guid.Empty;

return questionIdRow.QuestionId;
但是,以下操作不起作用(我得到一个
Simple.Data.unsolvableObjectException
“找不到列”)

简单的.Data文档给我的印象是,这就是限制所选列所需做的全部工作。请注意,选择只是选择稍后引用的同一列

实际异常在
var questionIdRow=
行中抛出


有人能给我一些指导吗?

这是一个常见的问题,事实上,在我们使用1.0之前,FindBy就被弃用了。问题是FindBy会立即返回一条记录,因此您不能继续对其调用查询方法

正确的方法是调用FindAllBy并以First或FirstOrDefault结束:

var db = Database.Open();

var questionIdRow = db.Question.FindAllByFriendlyId(friendlyId)
                           .Select(db.Question.QuestionId)
                           .FirstOrDefault();

if (questionIdRow == null) return Guid.Empty;

return questionIdRow.QuestionId;

这是一个常见的问题,实际上导致FindBy在1.0之前就被弃用了。问题是FindBy会立即返回一条记录,因此您不能继续对其调用查询方法

正确的方法是调用FindAllBy并以First或FirstOrDefault结束:

var db = Database.Open();

var questionIdRow = db.Question.FindAllByFriendlyId(friendlyId)
                           .Select(db.Question.QuestionId)
                           .FirstOrDefault();

if (questionIdRow == null) return Guid.Empty;

return questionIdRow.QuestionId;

答案对我来说已经足够好了,我使用FindBy是因为我认为它比FindAllBy更有效,但我想我会试试看它创建了什么样的sql,然后再把你和我弄得一团糟.“FirstOrDefault”在执行的sql中添加了一个“TOP 1”,所以它尽可能的高效.答案对我来说已经足够好了,我之所以使用FindBy,是因为我认为它比FindAllBy更高效,但我想我会试试看,看看它会创建什么样的sql,然后再把你我弄得一团糟..“FirstOrDefault”会在执行的sql中添加一个“Top1”,所以它会尽可能地高效。