1

我打电话给 Simple.Data,我想在其中限制要返回的列。但是我遇到了问题..

这工作正常:

var db = Database.Open();

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

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

return questionIdRow.QuestionId;

但是,以下不起作用(我得到一个Simple.Data.UnresolvableObjectException“未找到列”)

var db = Database.Open();

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

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

return questionIdRow.QuestionId;

Simple.Data 文档给我的印象是,这就是我需要做的所有事情来限制选定的列。请注意,选择只是选择稍后引用的同一列。

实际的异常被抛出就var questionIdRow =行了。

有人可以给我一些指导吗?

4

1 回答 1

1

这是一个常见问题,实际上导致 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;
于 2013-01-31T23:32:01.677 回答