public Beacon StoreBeacon(Beacon beacon) { using (var db = new Context()) { var oldBeacon = db.Beacons.Find(beacon.UUID, beacon.Major, beacon.Minor); if (oldBeacon != null) { ((IObjectContextAdapter)db).ObjectContext.Detach(oldBeacon); db.Beacons.Attach(beacon); db.Entry(beacon).State = System.Data.Entity.EntityState.Modified; } else { db.Beacons.Add(beacon); } db.SaveChanges(); return oldBeacon; } }
public object GetClient(Guid clientid, int? major = null) { using (var db = new Context()) { db.Configuration.LazyLoadingEnabled = false; db.Configuration.ProxyCreationEnabled = false; var client = db.Clients.Find(clientid); if (client == null) { throw new HttpResponseException(HttpStatusCode.NotFound); } var subq = db .Entry(client) .Collection(c => c.BeaconPings) .Query() .Include(c => c.Beacon) .Where(c => c.Date >= ThirtyMinutesAgo); if (major.HasValue) { subq = subq.Where(c => c.Beacon.Major == major.Value); } subq = subq .OrderBy(c => c.Date); subq.Load(); return client; } }