Exemple #1
0
        private static void InsertItemWithDbGeographyValue()
        {
            using (ReservationContext ctx = new ReservationContext()) {
                AccommodationProperty accommProperty = new AccommodationProperty {
                    Name = "Club & Hotel Letoonia",
                    // In order: POINT(Long Lat)
                    Location = DbGeography.FromText("POINT(29.097218832015983 36.63622153677499)")
                };

                ctx.AccommodationProperties.Add(accommProperty);
                ctx.SaveChanges();
            }
        }
Exemple #2
0
        private static void GetNearestAccommodationPropertiesWithSpecificDistance(DbGeography targetLocation, float distanceInKm)
        {
            using (ReservationContext ctx = new ReservationContext()) {
                float distanceInMeters = (distanceInKm * 1000);
                var   accommProperties = (from accommProperty in ctx.AccommodationProperties
                                          let distance = accommProperty.Location.Distance(targetLocation)
                                                         where distance <= distanceInMeters
                                                         orderby distance
                                                         select new {
                    Name = accommProperty.Name,
                    Distance = distance
                }).ToArray();

                foreach (var accommProperty in accommProperties)
                {
                    Console.WriteLine("Name: {0}, Distance: {1} meters", accommProperty.Name, accommProperty.Distance);
                }
            }
        }
Exemple #3
0
        private static void GetNearestAccommodationProperties(DbGeography targetLocation, int takeTop)
        {
            // ref: http://www.west-wind.com/weblog/posts/2012/Jun/21/Basic-Spatial-Data-with-SQL-Server-and-Entity-Framework-50
            // quote: The STDistance function returns the straight line distance between the passed
            //        in point and the point in the database field. The result for
            //        SRID 4326 is always in meters.

            using (ReservationContext ctx = new ReservationContext()) {
                // Order by distance (nearest one is at the top)
                var accommProperties = (from accommProperty in ctx.AccommodationProperties
                                        let distance = accommProperty.Location.Distance(targetLocation)
                                                       orderby distance
                                                       select new {
                    Name = accommProperty.Name,
                    Distance = distance
                }).Take(takeTop).ToArray();

                foreach (var accommProperty in accommProperties)
                {
                    Console.WriteLine("Name: {0}, Distance: {1} meters", accommProperty.Name, accommProperty.Distance);
                }
            }
        }