Creating an Implementation for an ORM

Jun 21, 2009 at 5:39 PM
Edited Jun 21, 2009 at 5:48 PM

The following steps are required for implementing a new ORM

  1. Create a new Directory within the OrmSmackdown project.  The name of the directory should correspond to the name of the ORM without any spaces or special characters such as underscores
  2. If you need to create any mappings you should create an additional directory under the new directory you created for the ORM's implementation.  This directory should be called /Mappings and included a readme.txt file with any thing that may be helpful for users to understand how the mappings work for your ORM.
  3. Any assemblies that are required for your implementation should be placed in a directory labeled /Dependencies/<ORM_NAME> you will see how this is done for other ORMs.  Please be respectful of any licensing agreements for any non open source ORMs.
  4. Any references added to the main OrmSmackdown project should reference DLL's within the /Dependencies directory.  The idea is that people evaluating different ORM's should be able to build the project by just downloading the source code from CodePlex.
  5. Implement any ORM specific mappings to the Mapping directory you created in step #2 above.
  6. Create a file labled Exerciser.cs directly under the directory you created in step #1 above.  The class should implement the interface IExerciser.cs so add that declaration to the class.
  7. Within the file Runner.cs of the project OrmSmackdownTests add a new [TestMethod] similar to the existing ones for your new ORM.  It should create an instance of your ORM's Exerciser class, then create an instance of the OrmSmackdownTests Exercises class passing your ORM's implementation in on the constructor.  Finally you should invoke the RunAll() method of the Exercises class.
  8. At this point you need to complete the final task, implementing the different methods for your ORM.  You can reference other implementations to get an idea of what should be returned.

Any questions please contact (kevinw) (-at)