Бриз фильтрации. Расширить на стороне сервера
Я пытаюсьBreezeJS
, Есть требование, которое я могу использовать.expand
в коде на стороне клиента, но на основеrole
пользователя, серверная часть не будет возвращать все записи для.expand
запрашиваемый тип. Я пытался создать кастомBreezeQueryable
атрибут и переопределить метод, чтобы сначала полностью отфильтровать лишние данные, просто чтобы попробовать. Но это бросило исключение.
Я не вижу никакой точки входа, где я мог бы сделать это на стороне сервера.
Пожалуйста, направьте меня в правильном направлении или дайте мне знать, если это невозможно. У меня есть доступ только к общимIQueryable
Как мне выполнить запросы по этому вопросу?
Вот пример кода:
Сервер:
[BreezeController]
[EnableCors("*", "*", "*")]
public class MyDataController : ApiController
{
readonly EFContextProvider<MyDbContext> _contextProvider;
public MyDataController()
{
_contextProvider = new EFContextProvider<MyDbContext>();
_contextProvider.Context.Configuration.ProxyCreationEnabled = false;
_contextProvider.Context.Configuration.LazyLoadingEnabled = false;
}
// GET api/<controller>
//Trying to use a custom attribute to filter data here
[CustomBreezeQueryable(AllowedQueryOptions = AllowedQueryOptions.All)]
[HttpGet]
public IQueryable<MyData> GetAllData()
{
var data = _contextProvider.Context.MyData;
return data;
}
}
public class CustomBreezeQueryableAttribute : BreezeQueryableAttribute
{
public override IQueryable ApplyQuery(IQueryable queryable,
ODataQueryOptions queryOptions)
{
var data = base.ApplyQuery(queryable, queryOptions);
//trying to filter out MyDataHistory for MyData for testing,
//it throws exception
//data = data.OfType<MyDataHistory>();
return data;
}
}
Сторона клиента:
breeze.EntityQuery.from("GetAllData").expand('MyDataHistory')
.using(this.manager)
.execute()
.then((data) => {
console.log(data.results[0]);
def.resolve(data.results);
});
Этоexception
Я получаю при использованииOfType
, и я хотел бы фильтровать, а не использовать это в любом случае.
{"DbOfTypeExpression requires an expression argument with a polymorphic result type that is compatible with the type argument."}