public int DeleteById(int routeId)
        {
            aspnetdbDataContext aspdb = new aspnetdbDataContext();
            var res=from p in aspdb.TrackPointlinqs
                        where p.RouteFK==routeId
                        select p;
            aspdb.TrackPointlinqs.DeleteOnSubmit(res.FirstOrDefault());
            aspdb.SubmitChanges();
            //Probieren ob das Einfügen Erfolgreich durchgeführt wurde oder nicht
            int k1;
            System.Data.Linq.ChangeSet cs1 = aspdb.GetChangeSet();
            k1 = cs1.Inserts.Count();
            //------------------------------------------------------

            var res2 = from p in aspdb.RouteLinqs
                       where p.RouteId==routeId
                       select p;
            aspdb.RouteLinqs.DeleteOnSubmit(res2.First());
            aspdb.SubmitChanges();
            //Probieren ob das Einfügen Erfolgreich durchgeführt wurde oder nicht
            int k2;
            System.Data.Linq.ChangeSet cs2 = aspdb.GetChangeSet();
            k2 = cs2.Inserts.Count();
            //------------------------------------------------------
            if ((k1 == 0) && (k2 == 0))
            {
                return 1;
            }
            else
                return 0;
        }
 public int DeleteAllForUser(Guid userId)
 {
     //First, remove all track points
     aspnetdbDataContext aspnetdb = new aspnetdbDataContext();
     var DelTrack = from q1 in aspnetdb.RouteLinqs
                            where q1.UserId == userId
                            join p in aspnetdb.TrackPointlinqs
                              on q1.RouteId equals p.RouteFK
                            select p;
     aspnetdb.TrackPointlinqs.DeleteAllOnSubmit(DelTrack);
     aspnetdb.SubmitChanges();
     //Die Route Löschen
     var DelRout = from q in aspnetdb.RouteLinqs
                   where q.UserId == userId
                   select q;
     aspnetdb.RouteLinqs.DeleteAllOnSubmit(DelRout);
     aspnetdb.SubmitChanges();
     return 1;
 }
        public List<Route> GetAllForUser(Guid userId)
        {
            var result = new List<Route>();
            aspnetdbDataContext aspdb = new aspnetdbDataContext();
            var res = from r in aspdb.RouteLinqs
                          where r.UserId == userId
                          select r;
            foreach (var row in res)
            {
                var routeId = (int)row.RouteId;
                var route = new Route(routeId)
                                {
                                    Name = (string)row.SourceName,
                                    Time = row.CreationTime is DBNull ? new DateTime() : Convert.ToDateTime(row.CreationTime)
                                };

                route.TrackPoints = GetTrackPointsForRoute(routeId);
                result.Add(route);
            }

            return result;
        }
        public Route GetById(int routeId, Guid userId)
        {
            Route result = null;
            aspnetdbDataContext aspdb = new aspnetdbDataContext();
            var query = from r in aspdb.RouteLinqs
                           where r.UserId == userId && r.RouteId==routeId
                           select r;
            var first=query.FirstOrDefault();
            if (first != null)
            {
                result = new Route(routeId)
                {
                    Name = first.SourceName,
                    Time = first.CreationTime ?? new DateTime()
                };

                result.TrackPoints = GetTrackPointsForRoute(routeId);
            }
            return result;
        }
        private List<TrackPoint> GetTrackPointsForRoute(int routeId)
        {
            aspnetdbDataContext aspdb = new aspnetdbDataContext();
            var result = new List<TrackPoint>();
            var trackPointsTable = from t in aspdb.TrackPointlinqs
                                   where t.RouteFK == routeId
                                   select t;
            foreach (var trackPointRow in trackPointsTable)
            {
                var trackPoint = new TrackPoint
                {
                    Id = (int)trackPointRow.TrackPointId,
                    Elevation = Convert.ToSingle(trackPointRow.Elevation),
                    Latitude = Convert.ToDouble(trackPointRow.Latitude),
                    Longitude = Convert.ToDouble(trackPointRow.Longitude),
                    Time = trackPointRow.TrackTime is DBNull ? new DateTime() : (DateTime)trackPointRow.TrackTime
                };
                result.Add(trackPoint);
            }

            return result;
        }
        public int Save(Route route)
        {
            aspnetdbDataContext aspdb = new aspnetdbDataContext();
            RouteLinq rtlq=new RouteLinq();
            rtlq.UserId = route.UserId;
            rtlq.SourceName = route.Name;
            rtlq.GpxData = XElement.Parse(route.GpxData);
            //---------------------------
            rtlq.CreationTime = route.Time;
            aspdb.RouteLinqs.InsertOnSubmit(rtlq);
            aspdb.SubmitChanges();
            //Probieren ob das Einfügen Erfolgreich durchgeführt wurde oder nicht
            int k1;
            System.Data.Linq.ChangeSet cs1 = aspdb.GetChangeSet();
            k1=cs1.Inserts.Count();
            //---Die Suche nach ID
            var res = (from p in aspdb.RouteLinqs
                       orderby p.RouteId descending
                       select p.RouteId).Take(1);
            route.Id =Convert.ToInt32(res.FirstOrDefault());
            //------------------------------------------------------

            foreach (var trackpoint in route.TrackPoints)
            {
                TrackPointlinq trlq = new TrackPointlinq();
                trlq.RouteFK = route.Id;
                trlq.TrackTime = trackpoint.Time;
                trlq.Latitude = (float)trackpoint.Latitude;
                trlq.Longitude = (float)trackpoint.Longitude;
                trlq.Elevation = trackpoint.Elevation;
                aspdb.TrackPointlinqs.InsertOnSubmit(trlq);
                aspdb.SubmitChanges();
            }

            //Probieren ob das Einfügen Erfolgreich durchgeführt wurde oder nicht
            int k2;
            System.Data.Linq.ChangeSet cs2 = aspdb.GetChangeSet();
            k2 = cs2.Inserts.Count();
            //------------------------------------------------------
            if ((k1 == 0) && (k2 == 0))
            {
                return 1;
            }
            else
                return 0;
        }