Passero.Framework
1.0.0-4.0.13
dotnet add package Passero.Framework --version 1.0.0-4.0.13
NuGet\Install-Package Passero.Framework -Version 1.0.0-4.0.13
<PackageReference Include="Passero.Framework" Version="1.0.0-4.0.13" />
<PackageVersion Include="Passero.Framework" Version="1.0.0-4.0.13" />
<PackageReference Include="Passero.Framework" />
paket add Passero.Framework --version 1.0.0-4.0.13
#r "nuget: Passero.Framework, 1.0.0-4.0.13"
#:package Passero.Framework@1.0.0-4.0.13
#addin nuget:?package=Passero.Framework&version=1.0.0-4.0.13&prerelease
#tool nuget:?package=Passero.Framework&version=1.0.0-4.0.13&prerelease
Passero Framework
Un framework MVVM (Model-View-ViewModel) moderno e completo per Wisej.NET, progettato per semplificare lo sviluppo di applicazioni web enterprise con supporto multi-target (.NET Framework 4.8, .NET 8).
🚀 Caratteristiche Principali
Architettura MVVM
- ViewModel generico basato su
ViewModel<T>per gestione dati tipizzata - Repository pattern con supporto Dapper
- Data binding automatico con
BindingSourcee modalità Passero proprietaria - Change tracking integrato con supporto undo/redo
Gestione Dati
- ORM leggero basato su Dapper con supporto CRUD completo
- Query Builder integrato (QBE - Query By Example)
- Repository generico con operazioni async e batch
- Supporto SQL Server, MySQL, PostgreSQL
UI Controls
DataNavigator: Toolbar avanzata per navigazione/editing dati
- Pulsanti personalizzabili (First, Last, Next, Previous, New, Delete, Save, Undo, Find, Print, Refresh, Close)
- Supporto tasti funzione (F2-F12)
- Integrazione con DataGridView e DataRepeater
- Modalità Compact e Mini per responsive design
DbLookUpTextBox: Controllo lookup con ricerca intelligente
ErrorNotificationMessageBox: Gestione errori centralizzata
QBEForm: Form di ricerca dinamico basato su model
QueryBuilderControl: Controllo per costruire query in modo interattivo
- Il controllo può auto-seedare la prima regola quando
Columnscontiene campi disponibili eRootGroupnon ha regole. Questo evita un builder vuoto all'inizio. - Il comportamento deve rimanere opzionale se è richiesta una stato root completamente vuoto.
- UI del QueryBuilderControl: Il controllo deve mostrare una toolbar visibile a livello root con azioni rapide per:
- aggiungere una rule
- aggiungere un group
- cancellare il contenuto corrente Questo aiuta a rendere l’inserimento interattivo immediatamente accessibile anche quando il builder è vuoto.
- Il controllo può auto-seedare la prima regola quando
Report
FastReport Integration (OpenSource)
- Esportazione PDF
- Supporto SQL Server data source
- Template personalizzabili
SSRS Reports (SQL Server Reporting Services)
- Integrazione con ReportViewer
- Gestione parametri dinamici
Crystal Reports (solo .NET Framework)
- Supporto per Visual Studio 2022
Business System
- Framework per gestione sistemi business complessi
- Supporto per workflow e processi aziendali
- Integrazione con barcode (Code 128, QR Code, etc.)
📦 Struttura Progetti
PasseroFramework/ │ ├── Passero.Framework/ # Core framework │ ├── Base.ViewModel.cs # ViewModel generico │ ├── Base.Repository.cs # Repository pattern │ ├── Base.DbSet.cs # Gestione collezioni │ ├── ConfigurationManager.cs # Configurazione DB │ └── ReflectionHelper.cs # Utility reflection │ ├── Passero.Framework.Controls/ # UI Controls per Wisej │ ├── DataNavigator.cs # Toolbar navigazione │ ├── DbLookUpTextBox.cs # Controllo lookup │ ├── ErrorNotificationMessageBox.cs # Gestione errori │ └── QueryBuilderControl.cs # Controllo per costruire query │ ├── Passero.Framework.FRReports/ # FastReport support │ └── FRQBEReport.cs # Report con QBE │ ├── Passero.Framework.SSRSReports/ # SSRS support │ └── ReportManager.cs # Gestione SSRS │ ├── Passero.Framework.Barcode/ # Barcode generation │ └── BarcodeHelper.cs # Generazione barcode │ ├── Passero.Framework.BusinessSystem/ # Business system framework │ └── BusinessSystemCore.cs # Core business logic │ ├── PasseroDemo.Models/ # Modelli dati (esempio) ├── PasseroDemo.ViewModels/ # ViewModels (esempio) ├── PasseroDemo.Views/ # Views Wisej (esempio) ├── PasseroDemo.Repositories/ # Repositories (esempio) ├── PasseroDemo.Reports/ # Reports (esempio) └── PasseroDemo.Application/ # Applicazione demo
🎯 Quick Start
1. Installazione Pacchetti NuGet
dotnet add package Passero.Framework dotnet add package Passero.Framework.Controls dotnet add package Passero.Framework.FRReports # Opzionale per FastReport
2. Configurazione Database
// Configurare connection string in ConfigurationManager var config = new Passero.Framework.ConfigurationManager(); config.DBConnections.Add("MyApp", myDbConnection);
3. Creare un Model
[Table("publishers")] public class Publisher { [Key] [Column("pub_id")] public string PubId { get; set; }
[Column("pub_name")]
public string PubName { get; set; }
[Column("city")]
public string City { get; set; }
}
4. Creare un ViewModel
public class vmPublisher : ViewModel<Publisher> { // Logica business personalizzata (opzionale) public void CustomMethod() { // ... } }
5. Utilizzare nella View (Wisej Form)
public partial class frmPublishers : Form { private vmPublisher vmPublisher = new vmPublisher();
public void Init()
{
// Inizializza ViewModel
vmPublisher.Init(dbConnection);
vmPublisher.DataBindingMode = DataBindingMode.BindingSource;
vmPublisher.BindingSource = this.bsPublishers;
vmPublisher.AutoWriteControls = true;
vmPublisher.AutoReadControls = true;
// Carica dati
vmPublisher.GetAllItems();
// Configura DataNavigator
dataNavigator1.AddViewModel(vmPublisher, "Publishers");
dataNavigator1.SetActiveViewModel(vmPublisher);
// Bind a DataGridView
dgvPublishers.DataSource = vmPublisher.ModelItems;
}
}
🔧 Funzionalità Avanzate
Data Binding Automatico
// Crea binding automatico dai controlli con naming convention vmPublisher.CreatePasseroBindingFromBindingSource(this);
// I controlli con nomi come txt_<PropertyName> vengono automaticamente bindati
Operazioni CRUD
// Inserimento var newItem = new Publisher { PubId = "9999", PubName = "New Publisher" }; var result = vmPublisher.InsertItem(newItem);
// Aggiornamento vmPublisher.ModelItem.PubName = "Updated Name"; result = vmPublisher.UpdateItem();
// Cancellazione result = vmPublisher.DeleteItem(vmPublisher.ModelItem);
// Query personalizzate var items = vmPublisher.Repository.Query("SELECT * FROM publishers WHERE city = @City", new { City = "Boston" });
QBE (Query By Example)
// Form di ricerca dinamico basato su model QBEForm<Publisher> qbeForm = new QBEForm<Publisher>(dbConnection); qbeForm.SetTargetRepository(vmPublisher.Repository, () ⇒ RefreshData()); qbeForm.ShowQBE();
DataNavigator Events
// Eventi del ciclo di vita dataNavigator1.eAddNewRequest += (ref bool cancel) ⇒ { // Validazione prima dell'inserimento if (!IsValid()) cancel = true; };
dataNavigator1.eSaveRequest += (ref bool cancel) ⇒ { // Conferma salvataggio };
dataNavigator1.eDeleteRequest += (ref bool cancel) ⇒ { // Conferma eliminazione };
Gestione Barcode
// Genera barcode Code 128 var barcodeImage = BarcodeHelper.GenerateCode128("123456789");
// Genera QR Code var qrCode = BarcodeHelper.GenerateQRCode("https://example.com");
📚 Target Framework
- .NET Framework 4.7 - Per compatibilità legacy
- .NET Framework 4.8 - Per applicazioni Windows enterprise
- .NET 8 - Per applicazioni moderne cross-platform
- .NET 8 Windows - Per applicazioni Windows con UI moderna
- Wisej.NET 3.5.25 - Framework web UI
🔗 Dipendenze Principali
- Dapper 2.1.66 - Micro ORM
- Dapper.Contrib 2.0.78 - Estensioni CRUD
- Microsoft.Data.SqlClient 6.1.3 - SQL Server provider
- Newtonsoft.Json 13.0.4 - Serializzazione JSON
- FastReport.OpenSource 2026.1.2 - Report engine
- Wisej-3 3.5.25 - Web UI framework
- MiniExcel 1.42.0 - Export Excel leggero
- FastDeepCloner 1.3.6 - Deep cloning
🛠️ Build e Deploy
Build soluzione
dotnet build -c Release
Genera pacchetti NuGet (già configurati in .csproj)
dotnet pack -c Release
I pacchetti .nupkg saranno in bin/Release/
Pacchetti NuGet Disponibili
- Passero.Framework - Core framework
- Passero.Framework.Controls - UI controls
- Passero.Framework.FRReports - FastReport integration
- Passero.Framework.SSRSReports - SSRS integration
- Passero.Framework.Barcode - Barcode generation
- Passero.Framework.BusinessSystem - Business system framework
📖 Documentazione
Esempi Completi
Il progetto include una demo completa (PasseroDemo) con esempi di:
- Form CRUD (Publishers, Titles, Sales, etc.)
- Relazioni master-detail (Title-Authors)
- Lookup avanzati con DbLookUpTextBox
- Report FastReport e SSRS
- Query By Example (QBE)
- Navigazione dati con DataNavigator
Naming Convention
Per il data binding automatico, seguire queste convenzioni:
- TextBox/Label:
txt_<PropertyName>,lbl_<PropertyName> - CheckBox:
chk_<PropertyName> - ComboBox:
cmb_<PropertyName> - DateTimePicker:
dtp_<PropertyName>
Esempio: // Il controllo txt_pub_name verrà automaticamente bindato alla proprietà PubName private TextBox txt_pub_name;
🎥 Video Tutorial
📄 Licenza
MIT License - Vedi file LICENSE per dettagli
Copyright (c) 2024 Gabriele Del Giovine
👤 Autore
Gabriele Del Giovine
- GitHub: github.com/gdelgiovine/PasseroFramework
- YouTube: Tutorial disponibili sul canale
🤝 Contribuire
I contributi sono benvenuti! Per favore:
- Fai un fork del progetto
- Crea un branch per la tua feature (
git checkout -b feature/AmazingFeature) - Commit delle modifiche (
git commit -m 'Add some AmazingFeature') - Push al branch (
git push origin feature/AmazingFeature) - Apri una Pull Request
Linee Guida per Contribuire
- Segui le convenzioni di codice esistenti
- Aggiungi test per nuove funzionalità
- Aggiorna la documentazione
- Mantieni la compatibilità con tutti i target framework
🐛 Bug Report e Feature Request
Per bug report, feature request o domande:
- Issues: GitHub Issues
- Discussions: GitHub Discussions
🌟 Caratteristiche in Arrivo
- Supporto per Entity Framework Core
- GraphQL integration
- SignalR per real-time updates
- PWA (Progressive Web App) support con Wisej
- Docker containers per deploy
- Autenticazione OAuth2/OpenID Connect
- Audit trail automatico
- Multi-tenancy support
📊 Statistiche Progetto
- Progetti: 26 progetti nella soluzione
- Target Frameworks: .NET 4.7, 4.8, 8.0
- Linee di Codice: 50,000+ LOC
- Versione Corrente: 3.5.25
- Stato: Attivamente mantenuto
🏆 Casi d'Uso
Passero Framework è stato utilizzato con successo in:
- ERP - Gestione aziendale completa
- CRM - Customer Relationship Management
- WMS - Warehouse Management Systems
- Applicazioni Healthcare - Gestione cliniche e ospedali
- Retail - Punto vendita e gestione magazzino
💡 Best Practices
Performance
- Usa
Repository.QueryAsyncper operazioni asincrone - Implementa paginazione per liste grandi
- Utilizza
DbSetper operazioni batch
Sicurezza
- Valida sempre l'input utente
- Usa parametri per query SQL (Dapper lo fa automaticamente)
- Implementa logging per audit trail
Manutenibilità
- Separa logica business nei ViewModels
- Usa Repository personalizzati per query complesse
- Documenta metodi pubblici con XML comments
🔄 Versioning
Questo progetto segue Semantic Versioning:
- MAJOR: Breaking changes
- MINOR: Nuove funzionalità retrocompatibili
- PATCH: Bug fixes
🙏 Ringraziamenti
Un ringraziamento speciale a:
- Ice Tea Group - Per Wisej.NET framework
- Dapper team - Per l'eccellente micro ORM
- FastReport team - Per il report engine
- Tutti i contributors e utenti del framework
Passero Framework - Sviluppo rapido di applicazioni Wisej.NET con pattern MVVM moderno
Made with ❤️ in Italy
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Framework | net48 is compatible. net481 was computed. |
-
.NETFramework 4.8
- Dapper (>= 2.1.72)
- Dapper.ColumnMapper (>= 1.3.0)
- Dapper.Contrib (>= 2.0.78)
- EntityFramework (>= 6.5.2)
- FastDeepCloner (>= 1.3.6)
- Microsoft.Data.SqlClient (>= 6.1.4)
- MiniExcel (>= 1.43.0)
- Newtonsoft.Json (>= 13.0.4)
- Wisej-4 (>= 4.0.13)
-
net8.0
- Dapper (>= 2.1.72)
- Dapper.ColumnMapper (>= 1.3.0)
- Dapper.Contrib (>= 2.0.78)
- FastDeepCloner (>= 1.3.6)
- Microsoft.Data.SqlClient (>= 6.1.4)
- Microsoft.EntityFrameworkCore (>= 8.0.24)
- Microsoft.EntityFrameworkCore.Relational (>= 8.0.24)
- Microsoft.EntityFrameworkCore.SqlServer (>= 8.0.24)
- MiniExcel (>= 1.43.0)
- Newtonsoft.Json (>= 13.0.4)
- System.Drawing.Common (>= 8.0.0)
- Wisej-4 (>= 4.0.13)
-
net9.0
- Dapper (>= 2.1.72)
- Dapper.ColumnMapper (>= 1.3.0)
- Dapper.Contrib (>= 2.0.78)
- FastDeepCloner (>= 1.3.6)
- Microsoft.Data.SqlClient (>= 6.1.4)
- Microsoft.EntityFrameworkCore (>= 8.0.24)
- Microsoft.EntityFrameworkCore.Relational (>= 8.0.24)
- Microsoft.EntityFrameworkCore.SqlServer (>= 8.0.24)
- MiniExcel (>= 1.43.0)
- Newtonsoft.Json (>= 13.0.4)
- System.Drawing.Common (>= 9.0.0)
- Wisej-4 (>= 4.0.13)
NuGet packages (4)
Showing the top 4 NuGet packages that depend on Passero.Framework:
| Package | Downloads |
|---|---|
|
Passero.Framework.Controls
UI Controls library for Passero Framework |
|
|
Passero.Framework.SSRSReports
Libreria per la gestione di report Microsoft SSRS nel Passero Framework |
|
|
Passero.Framework.FRReports
Libreria per la gestione di report FastReport nel Passero Framework |
|
|
Passero.Framework.JwtAuthHandler
Wisej.NET JWT Authentication Handler for Passero Framework |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0-4.0.13 | 82 | 5/29/2026 |
| 1.0.0-4.0.12 | 69 | 5/29/2026 |