Earthworm - An ORM for Esri Geodatabase (via ArcObjects)
A simple .NET assembly that provides an object-relational mapping abstraction layer for geodatabase feature classes and tables. It converts features and rows into a (lazy) sequence of strongly-typed objects.
Download Tool (Recommended)
Download Source Code via GitHub
- Fights the impedance mismatch between geodatabase tables and OOP.
- Does not get in the way of existing ArcObjects code.
- Works with Desktop ArcObjects, Addin, SOE and Engine applications.
- Does not require any auto-generated code. No XML mapping files. No dependency on the IDE.
- Supports CRUD operations with intuitive syntax.
- Supports runtime "code first" methods for creating feature classes and tables based on defined types.
- Respects all geodatabase behaviours such as versions, edit sessions, etc.
- Works with anything that implements IFeatureClass or ITable (i.e. shapefiles, coverages). Note: The GUI tool only works with SDE, file and personal geodatabases.
- Returns mapped objects as a lazy sequence implementing IEnumerable<T>. Allows for LINQ queries. Facilitates functional programming.
- Provides JSON serialization/deserialization for geometries.
- Provides KML serialization for geometries.
- Enables common spatial operations and predicates as extension methods for IGeometry to avoid verbose interface casting code.
- Mapped properties automatically raise the INotifyPropertyChanged.PropertyChanged event upon property setter access (via Reflection.Emit but memoized).
- Super light weight. The entire library is written in 600 lines of code.