mirror of https://github.com/abpframework/abp.git
2 changed files with 115 additions and 0 deletions
@ -0,0 +1,113 @@ |
|||||
|
## Entity Framework Core Integration |
||||
|
|
||||
|
This document explains how to integrate EF Core as ORM provider to ABP based applications and how to configure it in details. |
||||
|
|
||||
|
### Installation |
||||
|
|
||||
|
`Volo.Abp.EntityFrameworkCore` is the main nuget package for EF Core integration. Install it to your project (for a layered application, to your data/infrastructure layer): |
||||
|
|
||||
|
```` |
||||
|
Install-Package Volo.Abp.EntityFrameworkCore |
||||
|
```` |
||||
|
|
||||
|
Then add `AbpEntityFrameworkCoreModule` module dependency to your [module](Module-Development-Basics.md): |
||||
|
|
||||
|
````C# |
||||
|
using Volo.Abp.EntityFrameworkCore; |
||||
|
using Volo.Abp.Modularity; |
||||
|
|
||||
|
namespace MyCompany.MyProject |
||||
|
{ |
||||
|
[DependsOn(typeof(AbpEntityFrameworkCoreModule))] |
||||
|
public class MyModule : AbpModule |
||||
|
{ |
||||
|
//... |
||||
|
} |
||||
|
} |
||||
|
```` |
||||
|
|
||||
|
### Creating DbContext |
||||
|
|
||||
|
You can create your DbContext as you normally do. It should be derived from `AbpDbContext<T>` as shown below: |
||||
|
|
||||
|
````C# |
||||
|
using Microsoft.EntityFrameworkCore; |
||||
|
using Volo.Abp.EntityFrameworkCore; |
||||
|
|
||||
|
namespace MyCompany.MyProject |
||||
|
{ |
||||
|
public class MyDbContext : AbpDbContext<MyDbContext> |
||||
|
{ |
||||
|
//...your DbSet properties |
||||
|
|
||||
|
public MyDbContext(DbContextOptions<MyDbContext> options) |
||||
|
: base(options) |
||||
|
{ |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
```` |
||||
|
|
||||
|
### Registering DbContext To Dependency Injection |
||||
|
|
||||
|
Use `AddAbpDbContext` method in your module to register your DbContext class for [dependency injection](Dependency-Injection.md) system. |
||||
|
|
||||
|
````C# |
||||
|
using Microsoft.Extensions.DependencyInjection; |
||||
|
using Volo.Abp.EntityFrameworkCore; |
||||
|
using Volo.Abp.Modularity; |
||||
|
|
||||
|
namespace MyCompany.MyProject |
||||
|
{ |
||||
|
[DependsOn(typeof(AbpEntityFrameworkCoreModule))] |
||||
|
public class MyModule : AbpModule |
||||
|
{ |
||||
|
public override void ConfigureServices(IServiceCollection services) |
||||
|
{ |
||||
|
services.AddAbpDbContext<MyDbContext>(); |
||||
|
|
||||
|
//... |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
```` |
||||
|
|
||||
|
#### Add Default Repositories |
||||
|
|
||||
|
ABP can automatically create repositories (TODO: link) for the entities in your DbContext. Just use `AddDefaultRepositories()` option on registration: |
||||
|
|
||||
|
````C# |
||||
|
services.AddAbpDbContext<MyDbContext>(options => |
||||
|
{ |
||||
|
options.AddDefaultRepositories(); |
||||
|
}); |
||||
|
```` |
||||
|
|
||||
|
This will create a repository for each aggreate root entity (classes derived from AggregateRoot) by default. If you want to create repositories for other entities too, then set `includeAllEntities` to `true`: |
||||
|
|
||||
|
````C# |
||||
|
services.AddAbpDbContext<MyDbContext>(options => |
||||
|
{ |
||||
|
options.AddDefaultRepositories(includeAllEntities: true); |
||||
|
}); |
||||
|
```` |
||||
|
|
||||
|
Then you can inject and use `IRepository<TEntity>` or `IQueryableRepository<TEntity>` in your services (see repository documentation - TODO). |
||||
|
|
||||
|
TODO: Example |
||||
|
|
||||
|
#### Add Custom Repositories |
||||
|
|
||||
|
TODO... |
||||
|
|
||||
|
### Advanced Topics |
||||
|
|
||||
|
We will cover advanced techniques especially used to develop reusable modules and modular applications. |
||||
|
|
||||
|
#### Set Base DbContext Class or Interface for Default Repositories |
||||
|
|
||||
|
... |
||||
|
|
||||
|
#### Replace Other Repository |
||||
|
|
||||
|
... |
||||
Loading…
Reference in new issue