From c4bc24df0abe8c1dc6b87ea2c603f9b9cf331b8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 1 Aug 2019 16:49:10 +0300 Subject: [PATCH] Create domain layer and mongodb integration --- docs/en/Tutorials/Angular/Part-I.md | 67 +++++++++++++++++- .../images/bookstore-backend-solution-v2.png | Bin 0 -> 40441 bytes .../images/bookstore-backend-solution.png | Bin 44917 -> 0 bytes .../Acme.BookStore.Domain.Shared/BookType.cs | 15 ++++ .../src/Acme.BookStore.Domain/Book.cs | 16 +++++ .../BookStoreDataSeederContributor.cs | 46 ++++++++++++ .../appsettings.json | 2 +- .../MongoDb/BookStoreMongoDbContext.cs | 2 + 8 files changed, 145 insertions(+), 3 deletions(-) create mode 100644 docs/en/Tutorials/Angular/images/bookstore-backend-solution-v2.png delete mode 100644 docs/en/Tutorials/Angular/images/bookstore-backend-solution.png create mode 100644 samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/BookType.cs create mode 100644 samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/Book.cs create mode 100644 samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/BookStoreDataSeederContributor.cs diff --git a/docs/en/Tutorials/Angular/Part-I.md b/docs/en/Tutorials/Angular/Part-I.md index d48b76222a..fdc8de4bf4 100644 --- a/docs/en/Tutorials/Angular/Part-I.md +++ b/docs/en/Tutorials/Angular/Part-I.md @@ -19,7 +19,7 @@ Create a new project named `Acme.BookStore` by selecting the Angular as the UI f This is how the layered solution structure looks after it's created: -![bookstore-backend-solution](images/bookstore-backend-solution.png) +![bookstore-backend-solution](images\bookstore-backend-solution-v2.png) > You can see the [Application template document](../../Startup-Templates/Application.md) to understand the solution structure in details. However, you will understand the basics with this tutorial. @@ -79,10 +79,73 @@ namespace Acme.BookStore #### Add Book Entity to Your DbContext -... +Add a `IMongoCollection` property to the `BookStoreMongoDbContext` inside the `Acme.BookStore.MongoDB` project: + +````csharp +public class BookStoreMongoDbContext : AbpMongoDbContext +{ + public IMongoCollection Books => Collection(); + ... +} +```` #### Add Seed (Sample) Data +This section is optional, but it would be good to have an initial data in the database in the first run. ABP provides a [data seed system](../../Data-Seeding.md). Create a class deriving from the `IDataSeedContributor` in the `.Domain` project: + +````csharp +using System; +using System.Threading.Tasks; +using Volo.Abp.Data; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Domain.Repositories; + +namespace Acme.BookStore +{ + public class BookStoreDataSeederContributor + : IDataSeedContributor, ITransientDependency + { + private readonly IRepository _bookRepository; + + public BookStoreDataSeederContributor(IRepository bookRepository) + { + _bookRepository = bookRepository; + } + + public async Task SeedAsync(DataSeedContext context) + { + if (await _bookRepository.GetCountAsync() > 0) + { + return; + } + + await _bookRepository.InsertAsync( + new Book + { + Name = "1984", + Type = BookType.Dystopia, + PublishDate = new DateTime(1949, 6, 8), + Price = 19.84f + } + ); + + await _bookRepository.InsertAsync( + new Book + { + Name = "The Hitchhiker's Guide to the Galaxy", + Type = BookType.ScienceFiction, + PublishDate = new DateTime(1995, 9, 27), + Price = 42.0f + } + ); + } + } +} + +```` + +`BookStoreDataSeederContributor` simply inserts two books into database if there is no book added before. ABP automatically discovers and executes this class when you seed the database by running the `Acme.BookStore.DbMigrator` project. + ### Create the Application Service The next step is to create an [application service](../../Application-Services.md) to manage (create, list, update, delete...) the books. Application layer in the startup template is separated into two projects: diff --git a/docs/en/Tutorials/Angular/images/bookstore-backend-solution-v2.png b/docs/en/Tutorials/Angular/images/bookstore-backend-solution-v2.png new file mode 100644 index 0000000000000000000000000000000000000000..79bcecb5612bc13337e41ec25fbcaf408c63c705 GIT binary patch literal 40441 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�)|!lD2;NQ`y} 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 Lj%vB`gXjMMwX1E- diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/BookType.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/BookType.cs new file mode 100644 index 0000000000..ba84b4fe2a --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain.Shared/BookType.cs @@ -0,0 +1,15 @@ +namespace Acme.BookStore +{ + public enum BookType + { + Undefined, + Adventure, + Biography, + Dystopia, + Fantastic, + Horror, + Science, + ScienceFiction, + Poetry + } +} \ No newline at end of file diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/Book.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/Book.cs new file mode 100644 index 0000000000..93dd6d9adc --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/Book.cs @@ -0,0 +1,16 @@ +using System; +using Volo.Abp.Domain.Entities.Auditing; + +namespace Acme.BookStore +{ + public class Book : AuditedAggregateRoot + { + public string Name { get; set; } + + public BookType Type { get; set; } + + public DateTime PublishDate { get; set; } + + public float Price { get; set; } + } +} \ No newline at end of file diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/BookStoreDataSeederContributor.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/BookStoreDataSeederContributor.cs new file mode 100644 index 0000000000..479bac36e2 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Domain/BookStoreDataSeederContributor.cs @@ -0,0 +1,46 @@ +using System; +using System.Threading.Tasks; +using Volo.Abp.Data; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Domain.Repositories; + +namespace Acme.BookStore +{ + public class BookStoreDataSeederContributor : IDataSeedContributor, ITransientDependency + { + private readonly IRepository _bookRepository; + + public BookStoreDataSeederContributor(IRepository bookRepository) + { + _bookRepository = bookRepository; + } + + public async Task SeedAsync(DataSeedContext context) + { + if (await _bookRepository.GetCountAsync() > 0) + { + return; + } + + await _bookRepository.InsertAsync( + new Book + { + Name = "1984", + Type = BookType.Dystopia, + PublishDate = new DateTime(1949, 6, 8), + Price = 19.84f + } + ); + + await _bookRepository.InsertAsync( + new Book + { + Name = "The Hitchhiker's Guide to the Galaxy", + Type = BookType.ScienceFiction, + PublishDate = new DateTime(1995, 9, 27), + Price = 42.0f + } + ); + } + } +} diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/appsettings.json b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/appsettings.json index b5aba1d2b4..143c972ee1 100644 --- a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/appsettings.json +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.HttpApi.Host/appsettings.json @@ -4,7 +4,7 @@ "CorsOrigins": "https://*.BookStore.com,http://localhost:4200" }, "ConnectionStrings": { - "Default": "Server=localhost;Database=BookStore;Trusted_Connection=True;MultipleActiveResultSets=true" + "Default": "mongodb://localhost:27017|BookStore" }, "Redis": { "Configuration": "127.0.0.1" diff --git a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.MongoDB/MongoDb/BookStoreMongoDbContext.cs b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.MongoDB/MongoDb/BookStoreMongoDbContext.cs index aca564be4c..5a28248c53 100644 --- a/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.MongoDB/MongoDb/BookStoreMongoDbContext.cs +++ b/samples/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.MongoDB/MongoDb/BookStoreMongoDbContext.cs @@ -8,6 +8,8 @@ namespace Acme.BookStore.MongoDB [ConnectionStringName("Default")] public class BookStoreMongoDbContext : AbpMongoDbContext { + public IMongoCollection Books => Collection(); + public IMongoCollection Users => Collection(); protected override void CreateModel(IMongoModelBuilder modelBuilder)