Как использовать OData без Entity Framework


Я заинтересован в создании Службы данных OData wcf с помощью visual studio 2012. Однако я не хочу использовать платформу entity model framework, а вместо этого использую свой набор данных scheme less nosql для хранения и извлечения данных. Есть ли способ, который позволяет мне взять под свой контроль службы odata, не будучи приливом в конкретную структуру класса, такую как entity framework Microsoft?

1 4

1 ответ:

Вы можете использовать реализацию Microsoft OData без Entity Framework. Что вам действительно нужно, так это реализация IQueryable. Вот пример OData-сервиса, запрашивающего массив объектов:

using System.Web.Http;
using System.Web.Http.OData;
using System.Web.Http.OData.Builder;
using System.Web.Http.OData.Query;

// GET api/values
[ActionName("FromList")]
public IList<Poco> GetFromList(ODataQueryOptions<Poco> queryOptions)
{
    IQueryable<Poco> data = (
        new Poco[] { 
            new Poco() { id = 1, name = "one", type = "a" },
            new Poco() { id = 2, name = "two", type = "b" },
            new Poco() { id = 3, name = "three", type = "c" }
        })
        .AsQueryable();

    var t = new ODataValidationSettings() { MaxTop = 25 };
    queryOptions.Validate(t);

    var s = new ODataQuerySettings() { PageSize = 25 };
    IEnumerable<Poco> results =
        (IEnumerable<Poco>)queryOptions.ApplyTo(data, s);

    return results.ToList();
}

public class Poco
{
    public int id { get; set; }
    public string name { get; set; }
    public string type { get; set; }
}