1

単純なモデルを考えると:

public class Model{
    private string _id;
    [BsonId(IdGenerator = typeof(StringObjectIdGenerator))]
    [BsonRepresentation(BsonType.ObjectId)]
    public string Id {
        get { return _id; }
        set { _id = value; }
    }
    //Additional fields
}

クエリに基づいて、このクラスからいくつかのフィールドのみを選択したいとします。

_collection.AsQueryable<Model>().Where(m => m.Id == id)
    .Select( x => 
        new Model(){
            Id = x.Id,
            SomeField = x.SomeField
        });

次のエラーが発生します: 要素 'Id' はクラス Model のどのフィールドまたはプロパティとも一致しません。

select 句がない場合、Id が設定され、期待どおりに返されます。また、選択からフィールド Id を削除すると、Id が null になることを除いて、期待どおりにすべてが返されます。

select を使用して、返されるデータの量を制限します。動的オブジェクトを使用する (または渡す新しいオブジェクトを作成する) こともできますが、冗長なようです。

この問題に対する提案はありますか?

4

1 に答える 1

0

チケットはこちら: https://jira.mongodb.org/browse/CSHARP-1555

唯一の質問は、なぜ新しいモデルを作成するのかということです。x はすでに正しい型です。

于 2016-05-16T18:06:02.207 に答える