Archivi tag: .NET

WMI e .NET

Nel caso si debba utilizzare oggetti WMI da C# o altri linguaggi .NET, può essere utile conoscere MgmtClassGen.exe. Questo tool permette di ottenere una classe tipizzata per interagire con gli oggetti WMI. Ad esempio con l’esecuzione:

MgmtClassGen.exe Win32_Service /L CS /O some.namespace /N root\cimv2 /P ServiceProxy.cs

si otterrà una semplice classe che permette di interagire con tutti i servizi presenti sulla macchina locale o remota. Il codice generato è molto più immediato rispetto a dover fare le query WMI manualmente.

Un notevole risparmio di tempo.

Impossibile attivare i vincoli. Una o più righe contengono valori che violano il vincolo non-null, unique o foreign-key.

Quando si ha a che fare con i dataSet o dataTable tipizzati, si può ricevere l’errore (all’atto della select):

“Impossibile attivare i vincoli. Una o più righe contengono valori che violano il vincolo non-null, unique o foreign-key.”

o anche la sua versione inglese

“Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints”

Senza nessun’altra indicazione. Ma c’è un modo per sapere qual’è la colonna in errore e qual’è esattamente la violazione. Basta iterare sulla collezione GetErrors, presente sul datatable. Ad esempio (VB.NET):

Try
   Me.Adapter.Fill(dataTable)
Catch ex As Exception
   Dim err As DataRow() = dataTable.GetErrors
   Dim msg As New StringBuilder
   For Each e In err
       msg.AppendLine(e.RowError)
   Next
End Try

In questo modo la variabile msg conterrà tutte le colonne con un errore e il tipo di errore.