This project is read-only.

The current recommended release is available from Nuget:

PM> Install-Package ScrappyDB

What the heck is ScrappyDB?

ScrappyDB is a code first style object mapping library and Linq provider for Amazon SimpleDB. Also included is an ASP.NET Membership Provider for Amazon SimpleDB.


ScrappyDB is personal project that is in use in a small number of low volume websites. It has been under intermittent development for several years. It is NOT a highly tested enterprise ready solution.

Getting Started

Check out the integration tests and the Sample MVC 3 website for sample code to help you get started.


SimpleDB is simple, it doesn't support relationships or aggregate functions, and as such there is a lot of Linq to SQL style functionality/syntax that will fail because it's just not supported by the underlying database engine...

Version 2.0 of ScrappyDB provides Code First style .NET development with full Linq query support (This is a MAJOR rewrite of the pervious version of ScrappyDB.)

UPDATE 6/14/2012 - Currently working a significant new release that incorporates "some" DynamoDB support.

  • DynamoDB Membership Provider
  • Automatic DynamoDB table/schema generation
  • Separating Membership Providers for SimpleDB and DynamoDB in a separate assembly that will be a separate optional Nuget package.
  • ETA: "real soon now"

UPDATE 6/20/2011

UPDATE 5/11/2011

  • Migrated repository to Mercurial
  • Version 2.0 BETA release with Code First style object mapping and Linq query support.
  • Numerous breaking changes from 1.2
  • Using modified version of Remotion Re-Linq to implement SimpleDb Linq provider

UPATE 4/5/2010

  • Added support for ConsistentRead to all query and load methods.
  • Membership enhancements.
  • New Mock objects to facilitate unit testing.
  • Added Log4net logging through out project
  • New unit tests
  • Numerous bug fixes, refactorings, and enhancements.

UPATE 1/11/2010

  • Significant update that include ASP.NET Membership, Role, and Profile Providers.
  • Numerous bug fixes, refactorings, and enhancements.
  • Switch to new AWS SDK for .NET instead of the AWS SimpleDB library.

Why create a new tool instead of using one of the existing .NET tools for SimpleDB?

In particular:

  • Simple Savant (Simple Savant is a great tool and definitly a more mature code base. We would recommend that you investigate it first before considering ScrappyDB.)

Features that we felt were important for our implementation:

  • Support for multi-value attributes (using arrays or arraylists).
  • Support for nested objects and relationships (in particular cases where a custom class has a property that is a collection of some other custom class).
  • Integrated support for web caching for performance.
  • Location data (in particular the ability to do proximity searches "show me all records within 5 miles of X").

Things that we did NOT feel were important for our implementation:

  • Support for all .NET data types (we only support a subset of "common" data types, but there is no reason you can't enhance it to support the one you need).
  • Update caching to work around "eventual consistency" (if you don't have a full understanding of what eventual consistency means take the time to learn about it before you decide whether SimpleDB is a viable platform for your data).

About the source code

  • To do what it does ScrappyDB makes extensive use of some painful reflection.
  • The code does not follow any identifiable design patterns and it doesn't follow any of the latest inversion of control fashions: "I'm just a caveman, and I'm not familiar with your modern ways..."

Known Issues:

  • Relationship logic is lightly testing, is probably buggy and is likely to see some significant refactoring.
    • We are planning to add a second relationship type that uses multivalued attributes for "1 to few" relationships ("1 to many" relationships use an intermediate relationship "table" which is slower).



  • Currently the primary developer documentation for ScrappyDB is the unit tests included with the source code. But I have posted a few basic examples to help you get started here:

Last edited Jun 14, 2012 at 8:00 PM by scrappydog, version 35