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

これは一般的な問題であり、実際には 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;
于 2013-01-31T23:32:01.677 に答える