1. One or more computer readable storage media comprising computer executable instructions that, when executed, direct a computing device for: creating a file by running an export-command on an assembly containing at least one relationship provider, wherein the file is created by utilizing an attribute of the at least one relationship provider, wherein the at least one relationship provider is a Cmdlet; identifying environment variables for the file comprising the at least one relationship provider; loading the at least one relationship provider that is identified from the environment variables for the file, wherein the at least one relationship provider is plugged in a relationship engine when data store is added and the relationship provider is unplugged in the relationship provider engine when the data store is removed; adding the data store to the assembly; receiving data related to a first object that is contained in the data store by the at least one relationship provider that corresponds to the data store, wherein the data is of a form that is compatible with a relationship provider engine; exposing the data to the relationship provider engine by the at least one relationship provider; accessing the data received the at least one relationship provider by the relationship provider engine; defining a relationship between the first object and a second object within the exposed data by the relationship provider engine using an application programming interface (API), wherein the API is consumed by the relationship provider; showing the relationship between the first object and the second object in the data store to a user by the relation provider engine using the API; implementing a relationship provider base class on the at least one relationship provider, wherein the relationship provider base class is an abstract class and the relationship provider base class comprises: attributes that represent a relationship between the first object and the second object comprising: a relationship name field that identifies the relationship; a first relationship provider field that identifies a first relationship provider or a data store from which the relationship originates; a second relationship provider field that identifies a second relationship provider or a data store to which the relationship maps; a Description Property that describes the relationship as a localized string; and functions to respond to a navigation command from a user comprising: an IsRelationshipValid function that returns true if the relationship is valid for a path, a property, and a target; a GetRelationshipTargets function that returns targets possible to traverse based on a specified path; a ResolveRelationship function that receives a path in the first relationship provider and returns a path to the second relationship provider, and a CanResolveRelationship function that returns true if an input relationship can be resolved from the first relationship provider to the second relationship provider, analyzing the data received by the at least one relationship provider by utilizing the attributes, which are of the implemented relationship provider base class on the at least one relationship provider and which correspond to the first object and the second object, to determine dynamically a relationship between the first object and the second object, wherein the analyzing is performed by the relationship provider engine using the API; receiving the navigation command from the user; and showing the relationship between the first object and the second object to the user using at least one function of the implemented relationship provider base class on the at least one relationship provider when the navigation command from the user is received.
1. One or more computer readable storage media comprising computer executable instructions that, when executed, direct a computing device for: creating a file by running an export-command on an assembly containing at least one relationship provider, wherein the file is created by utilizing an attribute of the at least one relationship provider, wherein the at least one relationship provider is a Cmdlet; identifying environment variables for the file comprising the at least one relationship provider; loading the at least one relationship provider that is identified from the environment variables for the file, wherein the at least one relationship provider is plugged in a relationship engine when data store is added and the relationship provider is unplugged in the relationship provider engine when the data store is removed; adding the data store to the assembly; receiving data related to a first object that is contained in the data store by the at least one relationship provider that corresponds to the data store, wherein the data is of a form that is compatible with a relationship provider engine; exposing the data to the relationship provider engine by the at least one relationship provider; accessing the data received the at least one relationship provider by the relationship provider engine; defining a relationship between the first object and a second object within the exposed data by the relationship provider engine using an application programming interface (API), wherein the API is consumed by the relationship provider; showing the relationship between the first object and the second object in the data store to a user by the relation provider engine using the API; implementing a relationship provider base class on the at least one relationship provider, wherein the relationship provider base class is an abstract class and the relationship provider base class comprises: attributes that represent a relationship between the first object and the second object comprising: a relationship name field that identifies the relationship; a first relationship provider field that identifies a first relationship provider or a data store from which the relationship originates; a second relationship provider field that identifies a second relationship provider or a data store to which the relationship maps; a Description Property that describes the relationship as a localized string; and functions to respond to a navigation command from a user comprising: an IsRelationshipValid function that returns true if the relationship is valid for a path, a property, and a target; a GetRelationshipTargets function that returns targets possible to traverse based on a specified path; a ResolveRelationship function that receives a path in the first relationship provider and returns a path to the second relationship provider, and a CanResolveRelationship function that returns true if an input relationship can be resolved from the first relationship provider to the second relationship provider, analyzing the data received by the at least one relationship provider by utilizing the attributes, which are of the implemented relationship provider base class on the at least one relationship provider and which correspond to the first object and the second object, to determine dynamically a relationship between the first object and the second object, wherein the analyzing is performed by the relationship provider engine using the API; receiving the navigation command from the user; and showing the relationship between the first object and the second object to the user using at least one function of the implemented relationship provider base class on the at least one relationship provider when the navigation command from the user is received. 9. The one or more computer readable storage media of claim 1 , further comprising computer executable instructions that direct the computing device to facilitate navigation from the first object and the second object.