Entity FrameworkのクエリにのIQueryableを適用するプログラム的な方法我々は、Web APIとURLからのODataクエリを受け入れることができ、それは同じくらい簡単です:ASP.NETのWeb API
[EnableQuery]
public IQueryable<EFType> GetBuiltInTypes()
{
return db.EFTypes;
}
データが制限されますODataクエリとしてのデータベースがEntity Frameworkデータベースクエリに追加されます。
のは、私はそれを返す前に、データをいくつかの仕事をしたいとしましょう:
[EnableQuery]
public IQueryable<SomePOCO> GetBuiltInTypes()
{
var dbQuery = from obj in FncCall() select obj;
//Do something with the data and put the result into a
//List<SomePOCO>
var list = DoSomeWork(dbQuery) //whatever
return list.AsQueryable();
}
注:一般的なDbSet
を返し、ないそれはまだ動作しますDbSet<SomeType>
をそれが制限されますFncCall()
を結果とメモリ内のlist
にODataクエリを適用し、dbQuery
がデータベースに適用されていませんか?それを行う簡単な方法?で、Microsoftのドキュメントから
私はで動作するように持っているものとしてコンパイル時に、この場合には、Product
を我々は
public IQueryable<Product> Get(ODataQueryOptions opts) {
var settings = new ODataValidationSettings() {
// Initialize settings as needed.
AllowedFunctions = AllowedFunctions.AllMathFunctions
};
opts.Validate(settings);
IQueryable results = opts.ApplyTo(products.AsQueryable());
return results as IQueryable<Product>;
}
を行うことができますが、私は種類を知りませんDbType
。
まあ、 ? – 12seconds
はい、問合せに追加してデータベースで行うことはできませんが、オブジェクトを別のセット・タイプのオブジェクトに変換します。 –
なぜGenericバージョンを使用する必要があるのかまだ分かりません。 ODataライブラリのどのメソッドは、汎用バージョンのIQueryableに制限されていますか? –
Igor