Как сделать в выражении «Одата» в выражение фильтра?C#

Место общения программистов C#
Ответить
Anonymous
 Как сделать в выражении «Одата» в выражение фильтра?

Сообщение Anonymous »

У меня есть строка фильтра, соответствующая синтаксису odata $ и желаю разобрать его в систему. Linq.expressions выражение. Microsoft.aspnet.odata реализация. Все штраф. Http post конечные точки, которые запускают некоторую активность в подмножестве записей. Чтобы выбрать это подмножество, тела запроса атрибута post конечных точек содержат, среди прочего, атрибут фильтра , который содержит строку фильтра. и тот же анализатор, который использовался для запроса.

Код: Выделить всё

Microsoft.AspNet.OData
), чтобы узнать, что я должен использовать для преобразования этой строки фильтров в дерево выражения, сделанную из System.linq.expressions классы - с целью применения ее в запросе на основе фреймвортов для нашего DB.
Я думаю, что я довольно близко, но что -то все еще не хватает - это то, что у меня есть (в классе, в этом возрасте. T ):

Код: Выделить всё

var modelBuilder = new ODataModelBuilder();
var typeConfig = modelBuilder.EntitySet("Items").EntityType;

// Now, I call typeConfig.HasKey() for one or more properties (depending on `T`),
// as for some reason, the properties marked with [Key] are not automatically
// recognized.

var edm = modelBuilder.GetEdmModel();
var eSet = edm.EntityContainer.FindEntitySet("Items");

// passing a hard-coded sample filter here
var parser = new ODataQueryOptionParser(edm, new ODataPath(new EntitySetSegment(eSet)), new Dictionary { { "$filter", "Id eq 5" } });
var filterClause = parser.ParseFilter();

var svcCollection = new ServiceCollection();
svcCollection.AddOData();
svcCollection.AddODataQueryFilter();
svcCollection.AddTransient();
svcCollection.AddTransient();
svcCollection.AddSingleton(edm);

var binder = new FilterBinder(svcCollection.BuildServiceProvider());

// I hope this will return what I'm after.
var expr = binder.Bind(filterClause.Expression);
К сожалению, NullReferenceException бросается где -то глубоко внутри связующего в последней строке.
Что мне нужно сделать, чтобы исправить это? Ответ.)

Подробнее здесь: https://stackoverflow.com/questions/796 ... expression
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»