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. It is basically the same as using ICursor.
- 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.
- Encapsulates low-level ArcObjects "ceremony code" such as the cursor cleanup code.
- Provides JSON serialization/deserialization compatible with ArcGIS REST API.
- Provides KML serialization for geometries.
- Enables common spatial operations and predicates as extension methods for IGeometry to avoid verbose interface casting code.
- Provides class code generation for meta programming (i.e. code generation tools or runtime compilation via CodeDom or Roslyn). Supports C# and Visual Basic.
- Mapped classes implement INotifyPropertyChanged. Mapped properties automatically raise the PropertyChanged event upon property setter access (via IL weaving) without using an AOP library.
- Super light weight. The entire library is written in 700 lines of code (52KB compiled).
- Completely free!