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!

Antworten auf die Frage(1)

Ihre Antwort auf die Frage