Skip to main content

Spot Entities

Entities for fishing spots, boat ramps, and location ratings.

FishingSpot

Purpose: Popular fishing spot/location with ratings and access information.

Key Fields:

  • Id (int): Unique identifier
  • Name: Spot name
  • Description: Spot description
  • SpotType: Lake, River, Pier, Shore, Boat Ramp
  • Latitude, Longitude: Location coordinates
  • Address, City, StateName, ZipCode, Country: Address
  • WaterBodyName: Water body name (e.g., "Lake Michigan")
  • StateId, FishingZoneId: Links to regulations
  • CreatedByUserId: User who created/contributed spot
  • PopularSpecies: Popular fish species
  • IsPublicAccess: Public access flag
  • RequiresFee: Whether access requires fee
  • AccessFee: Access fee amount
  • AccessNotes: Access restrictions, parking info
  • HasParking, HasRestrooms, HasBoatRamp: Features
  • AverageRating: Average rating
  • RatingCount: Number of ratings

Relationships:

  • Many-to-one: State, FishingZone, User (creator)
  • One-to-many: SpotRating, SpotAccess

Usage Patterns:

// Create fishing spot
var spot = new FishingSpot
{{
Name = "Lake Michigan Pier",
SpotType = "Pier",
Latitude = 43.1234,
Longitude = -87.5678,
City = "Milwaukee",
StateName = "Wisconsin",
IsPublicAccess = true,
HasParking = true,
CreatedByUserId = userId
}};

// Get spots near location
var spots = context.FishingSpots
.Where(fs => fs.Latitude.HasValue && fs.Longitude.HasValue)
.ToList();

SpotRating

Purpose: User ratings and reviews for fishing spots.

Key Fields:

  • Id (int): Unique identifier
  • FishingSpotId: Rated spot
  • UserId: Rating user
  • Rating: Rating value (1-5)
  • Comment: Rating comment
  • AccessibilityRating: Accessibility rating
  • FishingQualityRating: Fishing quality rating
  • SafetyRating: Safety rating
  • CreatedAt: Rating timestamp

Relationships:

  • Many-to-one: FishingSpot, User

Usage Patterns:

// Rate spot
var rating = new SpotRating
{{
FishingSpotId = spotId,
UserId = userId,
Rating = 5,
Comment = "Great spot for salmon!",
AccessibilityRating = 4,
FishingQualityRating = 5,
SafetyRating = 5,
CreatedAt = DateTime.UtcNow
}};

// Get spot ratings
var ratings = context.SpotRatings
.Where(sr => sr.FishingSpotId == spotId)
.Include(sr => sr.User)
.OrderByDescending(sr => sr.CreatedAt)
.ToList();

BoatRamp

Purpose: Boat ramp locations and information.

Key Fields:

  • Id (int): Unique identifier
  • Name: Ramp name
  • Location: Ramp location
  • Latitude, Longitude: Coordinates
  • RampType: Single, Double, Triple lane
  • FeeRequired: Whether fee is required
  • FeeAmount: Fee amount
  • ParkingSpaces: Number of parking spaces
  • TrailerSpaces: Number of trailer spaces
  • HasDock: Whether has dock
  • HasRestroom: Whether has restroom
  • IsPublic: Public access flag

Relationships:

  • Many-to-one: FishingSpot (optional)

SpotAccess

Purpose: Access information and restrictions for fishing spots.

Key Fields:

  • Id (int): Unique identifier
  • FishingSpotId: Associated spot
  • AccessType: Public, Private, Restricted
  • AccessNotes: Access details
  • Restrictions: Access restrictions
  • Hours: Operating hours
  • Season: Seasonal access

Relationships:

  • Many-to-one: FishingSpot