当我使用Breeze JS查询我的REST服务时,参数未通过

时间:2016-08-09 15:27:54

标签: asp.net asp.net-mvc asp.net-core-mvc breeze

我正在与AngularJS和BreezeJS合作开发SPA。后端在ASP.NET Core MVC 6和EF 6.1.3上实现。

REST服务正在运行,但是当我使用Breeze JS查询服务时,不会传递参数。

E.g。

  [HttpGet]
  [EnableQuery]
  public IQueryable<Event> Events()
  {
  return this._contextProvider.Context.Events;
  }

我试图通过浏览器调用该服务... /上下文/事件?$ filter =(Id%20eq%202)。结果仍然相同,过滤器不适用。

我错过了什么?如何将OData添加到MVC6?

我的控制器:

namespace FleetManagement.WebApi.Controllers
{
    /// <summary>Main REST / Breeze controller for the Fleet Management module.</summary>
    /// <seealso cref="Microsoft.AspNetCore.Mvc.Controller"/>
    [BreezeController]
    [EnableCors("AllowAll")]
    [EnableQuery]
    [EnableBreezeQuery]
    public class ContextController : Controller
    {
        #region Fields.

        private readonly D4GEFContextProvider<FleetManagementContext> _contextProvider;

        #endregion

        #region Constructors / Desctructor.

        /// <summary>Initializes a new instance of the <see cref="ContextController"/> class.</summary>
        public ContextController()
        {
            var connectionString = "Data Source=lomoofsv14\\d4g;Initial Catalog=Test_Westfalen_D4G_Custom_RandomData;Integrated Security=True;MultipleActiveResultSets=True;Application Name=FMREST";
            this._contextProvider = new D4GEFContextProvider<FleetManagementContext>(connectionString);
        }

        #endregion

        #region Public Methods.

        /// <summary>Get a list of assets to a given asset filter and data profile.</summary>
        /// <param name="filters">The filters for the asset types is a string of type names e.g. 'Tractor, Trailer'.</param>
        /// <param name="profileUId">The profile identifier for the data filter.</param>
        /// <returns>IEnumerable&lt;Asset&gt;.</returns>
        [HttpGet]
        public IQueryable<Asset> Assets(string filters, string profileUId)
        {
            return this._contextProvider.Context.GetAssets(filters, profileUId);
        }

        /// <summary>Assets the types.</summary>
        /// <returns>IQueryable&lt;System.String&gt;.</returns>
        [HttpGet]
        public IQueryable<string> AssetTypes()
        {
            return Enum.GetNames(typeof(AssetTypes))
                       .AsQueryable();
        }

        /// <summary>Data collection "Events".</summary>
        /// <returns>IQueryable&lt;Event&gt;.</returns>
        [HttpGet]
        public IQueryable<Event> Events()
        {
            return this._contextProvider.Context.Events;
        }

        /// <summary>Metadata of the EF DBContext necessary for Breeze to build the JSON objects.</summary>
        /// <returns>System.String.</returns>
        [HttpGet]
        public string Metadata()
        {
            return this._contextProvider.Metadata();
        }

        /// <summary>Saves all changes to the database.</summary>
        /// <param name="saveBundle">The save bundle.</param>
        /// <returns>SaveResult.</returns>
        [HttpPost]
        public SaveResult SaveChanges(JObject saveBundle)
        {
            this._contextProvider.BeforeSaveEntityDelegate = this.BeforeSaveEntityDelegate;
            this._contextProvider.AfterSaveEntitiesDelegate = this.AfterSaveEntitiesDelegate;

            return this._contextProvider.SaveChanges(saveBundle);
        }

        [HttpGet]
        public IQueryable<Tractor> Tractors()
        {
            return this._contextProvider.Context.Tractors;
        }

        [HttpGet]
        public IQueryable<Trailer> Trailers()
        {
            return this._contextProvider.Context.Trailers;
        }

        #endregion

        #region Private Methods.

        private void AfterSaveEntitiesDelegate(Dictionary<Type, List<EntityInfo>> saveMap, List<KeyMapping> keyMappings)
        {
            // TractorToEvent Assign Event to tractor
        }

    }
}

0 个答案:

没有答案