--- uid: FAQ.Commands.DI title: Questions about Dependency Injection with Commands --- # Dependency-injection-related Questions In the following section, you will find common questions and answers to utilizing dependency injection with @Discord.Commands, as well as common troubleshooting steps regarding DI. ## What is a service? Why does my module not hold any data after execution? In Discord.Net, modules are created similarly to ASP.NET, meaning that they have a transient nature; modules are spawned whenever a request is received, and are killed from memory when the execution finishes. In other words, you cannot store persistent data inside a module. Consider using a service if you wish to workaround this. Service is often used to hold data externally so that they persist throughout execution. Think of it like a chest that holds whatever you throw at it that won't be affected by anything unless you want it to. Note that you should also learn Microsoft's implementation of [Dependency Injection] \([video]) before proceeding, as well as how it works in [Discord.Net](xref:Guides.Commands.DI#usage-in-modules). A brief example of service and dependency injection can be seen below. [!code-csharp[DI](samples/DI.cs)] [Dependency Injection]: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/dependency-injection [video]: https://www.youtube.com/watch?v=QtDTfn8YxXg ## Why is my `CommandService` complaining about a missing dependency? If you encounter an error similar to `Failed to create MyModule, dependency MyExternalDependency was not found.`, you may have forgotten to add the external dependency to the dependency container. Starting from Discord.Net 2.0, all dependencies required by each module must be present when the module is loaded into the [CommandService]. This means when loading the module, you must pass a valid [IServiceProvider] with the dependency loaded before the module can be successfully registered. For example, if your module, `MyModule`, requests a `DatabaseService` in its constructor, the `DatabaseService` must be present in the [IServiceProvider] when registering `MyModule`. [!code-csharp[Missing Dependencies](samples/missing-dep.cs)] [IServiceProvider]: xref:System.IServiceProvider [CommandService]: xref:Discord.Commands.CommandService