Breeze JS - Repository mit EFContextProvider zum Aktivieren / Deaktivieren der OData-Filterung
Ich suche ein Repository-Muster mit Brise EFContextProvider zu implementieren. In diesem Repository würde ich eine Methode zum Abfragen der Datenbank mithilfe der OData-Filterung bereitstellen ... genau so, wie sich Breeze standardmäßig verhält. Ich möchte auch eine Methode verfügbar machen, die die OData-Filterung ignoriert und eine Liste von Elementen zurückgibt, als wäre dies der Standard-EF-Kontext.
Zusammenfassend möchte ich versuchen, so etwas zu tun:
public class RepositoryBaseEntity<T> : IRepository<T> where T : class
{
protected Breeze.WebApi.DataModelContainer _context;
public RepositoryBaseEntity(Breeze.WebApi.EFContextProvider<DataModelContainer> context)
{
_context = context;
}
/// <summary>
/// Gets all elements, ignoring OData filtering
/// </summary>
/// <returns>All elements, or null if none exists</returns>
public IEnumerable<T> GetAll()
{
// disable OData filtering in Breeze.WebApi.EFContextProvider
return _context.Context.Set<T>();
}
/// <summary>
/// Apply ODataFilters and get elements. Useful for Web API controllers
/// </summary>
/// <returns></returns>
public IEnumerable<T> ApplyODataFiltersAndGet()
{
// enable OData filtering in Breeze.WebApi.EFContextProvider
return _context.Context.Set<T>();
}
}
Ich habe mir Breeze EFContextProvider angesehen und es scheint keine Möglichkeit zu geben, die OData-Filterung zu deaktivieren.
Ich habe darüber nachgedacht, vielleicht den einfachen alten Entity Framework DataModelContainer zu verwenden, wenn ich keine OData-Filterung möchte, und Breeze EFContextProvider-Wrapper zu verwenden, wenn ich OData-Filterung möchte ... aber mit diesem Ansatz hätte ich zwei EF-Kontexte ... und das ist etwas, was ich vermeiden möchte ... in der Vergangenheit hatten wir in einigen anderen Projekten einige Probleme mit mehr als einem EF-Kontext.
Sie sehen also eine Möglichkeit, dies zu tun? Vielen Dank!