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);
