Tujuan dibuatnya aplikasi ini :
- Membuat proyek baru berdasarkan template yang ditentukan.
- Menambahkan referensi paket kedalam file proyek.
- Generate model dari server sql database pada entity framework core menggunakan scaffold
- Generate data access layer atau repository pattern unit of work
- Generate source code CRUD dasar dari database
Entity Framework Core CLI :
Install
dotnet tool install --global dotnet-ef
Update
dotnet tool update --global dotnet-ef
Jalankan perintah berikut untuk memverifikasi tools EF Core CLI sudah terinstall dengan benar:
dotnet ef
Download : CodeGenerator.zip
Untuk menjalankan aplikasi ini :
- Edit file
appsettings.json
- Jalankan program CodeGenerator.exe
Penjelasan appsettings.json
:
{ "DalOrRepository": true, ---> (wajib) true : DAL, false : repository pattern "VirtualGetterSetter": false, ---> (wajib) bool "Nullable": false, ---> (wajib) bool "Database": { "Host": "", ---> (wajib) database server "Name": "", ---> (wajib) database name "User": "", ---> (wajib) database user "Pass": "" ---> (wajib) database pass }, "Project": { "Name": "AppName", ---> (wajib) nama proyek, contoh: AppName "Namespace": "AppName", ---> (opsional) namespace proyek, jika tidak diisi maka akan merujuk ke nama proyek, contoh: AppName "Template": "console", ---> (wajib) .net default templates untuk dotnet new, default console "Language": "C#", ---> (wajib) bahasa C# "Framework": "net7.0", ---> (wajib) net6.0 or net7.0 "WorkingPath": "" ---> (opsional) lokasi folder proyek, jika tidak diisi proyek akan disimpan di desktop windows }, "Entity": { "Namespace": "AppName.Models", ---> (wajib) namespace yang akan digunakan untuk semua kelas yang dihasilkan. defaultnya dihasilkan dari namespace utama dan direktori folder proyek. "OutputPath": "Models", ---> (wajib) direktory tempat file akan disimpan. lokasi folder relatif terhadap direktori proyek "SchemaName": "", ---> (opsional) schemas dari tables dan views untuk mengenerate tipe entitas "TableName": "", ---> (opsional) tables dan views untuk mengenerate tipe entitas. "DataContext": { "Name": "AppDbContext", ---> (wajib) default nama data context "NameSpace": "AppName.Models", ---> (wajib) namespace untuk data context "Path": "Models" ---> (wajib) direktori tempat file disimpan. lokasi folder relatif terhadap direktori proyek }, "OnConfiguring": false, ---> (wajib) false : suppresses generation of the OnConfiguring method in the generated DbContext class. "Pluralize": false, ---> (wajib) false : tidak menggunakan pluralizer. "UseDataAnnotations": false, ---> (wajib) true : gunakan attribute untuk mengkonfigurasi model (jika memungkinkan). Jika opsi ini dihilangkan, hanya fluent API yang digunakan. "UseDatabaseName": true, ---> (wajib) true : menggunakan nama table, view, sequence, dan kolom yang sama persis dengan yang ada didatabase. Jika opsi ini dihilangkan, nama database akan dirubah sesusi konvensi penamaan C#. "Force": true ---> (wajib) true : menimpa file existing. }, "DataAccessLayer": { "DAO": "DAO", ---> (wajib) "BLL": "BLL", ---> (wajib) "DTO": "DTO", ---> (wajib) "Validator": "Validator" ---> (wajib) }, "RepositoryPattern": { "Repository": "Repository", ---> (wajib) "IRepository": "IRepository", ---> (wajib) "Entity": "Entity" ---> (wajib) }, "Logging": { "LogLevel": { "Default": "Debug", "System": "Information", "Microsoft": "Information" } } }
Contoh Penggunaan Data Access Layer
// SELECT SINGLE var result = CustomerBLL.SelectId(1); if (result != null) { Console.WriteLine("Ship To Code : " + result.ShipToCode.Trim()); Console.WriteLine("Ship To Address : " + result.ShipToAddress.Trim()); } // SELECT - Example 1 var result = CustomerBLL.Select(); if (result != null) { foreach (var item in result) { Console.WriteLine("Ship To Code : " + item.ShipToCode.Trim()); Console.WriteLine("Ship To Address : " + item.ShipToAddress.Trim()); Console.WriteLine(); } } - Example 2 var result = CustomerBLL.Select().Where(x => x.CustomerId == 1 ); if (result != null) { foreach (var item in result) { Console.WriteLine("Ship To Code : " + item.ShipToCode.Trim()); Console.WriteLine("Ship To Address : " + item.ShipToAddress.Trim()); Console.WriteLine(); } } // UPDATE var result = TypePersonnelBLL.SelectId(4); result.Description = "NAHKODA"; TypePersonnelBLL.Update(result); // INSERT TypePersonnel typePersonel = new TypePersonnel(); typePersonel.Description = "Type Baru"; TypePersonnelBLL.Insert(typePersonel); // DELETE var result = TypePersonnelBLL.SelectId(4); TypePersonnelBLL.Delete(result);