Reputation: 69
I am using Breeze.WebApi2.EF6 i got a simple breeze controller and a simple query but when i execute with a select i get all the data back not just the ones that i am selecting, Could you please help me?
Breeze Controller
[BreezeController]
public class BreezeController : ApiController
{
readonly EFContextProvider<CodeCamperDbContext> _contextProvider =
new EFContextProvider<CodeCamperDbContext>();
[HttpGet]
[Route("breeze/Metadata")]
public string GetMetadata()
{
return _contextProvider.Metadata();
}
[HttpGet]
[Route("breeze/GetLookups")]
public object Lookups()
{
var rooms = _contextProvider.Context.Rooms;
var tracks = _contextProvider.Context.Tracks;
var timeSlots = _contextProvider.Context.TimeSlots;
return new { rooms, tracks, timeSlots };
}
[HttpGet]
[Route("breeze/GetSessions")]
public IEnumerable<Session> Sessions()
{
var result = _contextProvider.Context.Sessions;
return result;
}
[HttpGet]
[Route("breeze/GetPersons")]
public IEnumerable<Person> Persons()
{
var result = _contextProvider.Context.Persons;
return result;
}
[HttpGet]
[Route("breeze/GetSpeakers")]
public IEnumerable<Person> Speakers()
{
var result = _contextProvider.Context.Persons
.Where(p => p.SpeakerSessions.Any());
return result;
}
}
datacontext.js
var getSessionsPartials = function (sessionsObservable) {
// Create breeze query
var query = EntityQuery.from('GetSessions')
.select('id, title, code')
.orderBy('timeSlotId, level, speaker.firstName');
// Execute breeze query
return manager.executeQuery(query)
.then(querySucceeded)
.fail(queryFailed);
// Handle the success callback
function querySucceeded(data) {
if (sessionsObservable) {
sessionsObservable(data.results);
}
log('Retrieved [Sessions] from remote data source', data, true);
}
};
I should get (id, title, code) but instead i get all the other data as well.
Upvotes: 0
Views: 244
Reputation: 109137
in stead of IEnumerable
, use IQueryable
...
public IQueryable<Session> Sessions()
...etc.
This enables any expression that's appended after the method call to be translated into SQL. When you expose IEnumerable
the connection with the original query provider is cut.
Upvotes: 3