Комментарии 14
Статья хорошая.
Я месяца 3 использую WebAPI OData + Kendo UI, пользоваться очень удобно. Но к сожалению пока не хватает параметров $expand и $select.
Тема вообще интересная, но мне кажется мало кто использует Kendo UI у нас.
Я месяца 3 использую WebAPI OData + Kendo UI, пользоваться очень удобно. Но к сожалению пока не хватает параметров $expand и $select.
Тема вообще интересная, но мне кажется мало кто использует Kendo UI у нас.
0
Удручает зависимость от EF
-3
Совершенно не обязательно использовать EF, просто необходимо реализовать нужные методы класса EntitySetController. В идеале, данные нужно получать из репозитория через внедрение зависимости.
0
И даже NHibernate можно использовать?
0
Запрос из URL транслируется в дерево выражений LINK, которое выполняется на IQueryable (в данном случае возвращает метод
public override IQueryable<ProductDTO> Get()
). Я согласен, что много ORM не поддерживают Link провайдер и его очень сложно реализовать. Рекомендую почитать блог о переводе OData запросов в HQL. есть еще открытый проект OData парсер для NHibernate, но я его не тестировал.-1
UI самописный или какой-то ui-фреймворк/компоненты использовали?
0
Использовал Kendo UI Web.
0
Писал похожую статью, но делал чуть не так. Скажите, а в вашем варианте возвращается параметр total, пагинация работает нормально?
0
Читал Вашу статью. Вы использовали ApiController, здесь же EntitySetController, в котором уже реализован параметр $inlinecount. При запросе
GET /odata/Products?%24inlinecount=allpages
мы получим такой результат:{
"odata.metadata":"http://localhost:52864/odata/$metadata#Products","odata.count":"4","value":[
{
"ProductID":1,"Name":"Product1","Price":"1.00","CategoryID":1,"CategoryName":"Categoty1"
},{
"ProductID":2,"Name":"Product2","Price":"2.00","CategoryID":1,"CategoryName":"Categoty1"
},{
"ProductID":3,"Name":"Product3","Price":"2.00","CategoryID":2,"CategoryName":"Category2"
},{
"ProductID":4,"Name":"dfgdf","Price":"0.00","CategoryID":1,"CategoryName":"Categoty1"
}
]
}
"odata.count":"4"
— это и есть total.0
Если мне не изменяет память, то OData была с самого появления WebAPI.
Можно уточнить, что именно добавилось с Web Tools 2012.2 Update?
Можно уточнить, что именно добавилось с Web Tools 2012.2 Update?
0
Обновление расширило реализацию протоколо OData. Во-первых стало проще использовать: переопределение базовых методов, определение ключа сущности, реализовали больше параметров oData запросов. И еще то, что я планирую описать в следующих статьях:
— поддежка OData связей сущностей типа
— реализованы OData Actions. Терерь можно вызывать различные методы типа:
— если не ошибаюсь, реализовано OData $metadata, например запрос
— поддежка OData связей сущностей типа
entity/$links/entity
;— реализованы OData Actions. Терерь можно вызывать различные методы типа:
odata/Products(1)/RateProduct
;— если не ошибаюсь, реализовано OData $metadata, например запрос
/odata/$metadata#Products/@Element
даст ответ:<edmx:Edmx xmlns:edmx="http://schemas.microsoft.com/ado/2007/06/edmx" Version="1.0">
<edmx:DataServices xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" m:DataServiceVersion="3.0" m:MaxDataServiceVersion="3.0">
<Schema xmlns="http://schemas.microsoft.com/ado/2009/11/edm" Namespace="ODataSample.Models">
<EntityType Name="ProductDTO">
<Key>
<PropertyRef Name="ProductID"/>
</Key>
<Property Name="ProductID" Type="Edm.Int32" Nullable="false"/>
<Property Name="Name" Type="Edm.String" Nullable="false"/>
<Property Name="Price" Type="Edm.Decimal" Nullable="false"/>
<Property Name="CategoryID" Type="Edm.Int32" Nullable="false"/>
<Property Name="CategoryName" Type="Edm.String"/>
</EntityType>
<EntityType Name="Category">
<Key>
<PropertyRef Name="ID"/>
</Key>
<Property Name="ID" Type="Edm.Int32" Nullable="false"/>
<Property Name="Name" Type="Edm.String" Nullable="false"/>
</EntityType>
</Schema>
<Schema xmlns="http://schemas.microsoft.com/ado/2009/11/edm" Namespace="Default">
<EntityContainer Name="Container" m:IsDefaultEntityContainer="true">
<EntitySet Name="Products" EntityType="ODataSample.Models.ProductDTO"/>
<EntitySet Name="Categories" EntityType="ODataSample.Models.Category"/>
</EntityContainer>
</Schema>
</edmx:DataServices>
</edmx:Edmx>
0
Теперь в бесплатную версию Kendo UI не входит grid. Кто нибудь знает похожий бесплатный аналог?
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
OData контроллеры в .NET MVC