martedì 25 novembre 2014

Entity Framework C# Creating a copy of an entity object

Nella gestione delle entità, può capire l'esigenza di avere due oggetti con gli stessi dati, compresa anche la chiave primaria. E di creare una copia dell'oggetto (tranne per il valore chiave) come nuovo record.
Se proviamo a modificare la chiave, verrà scatenata un'eccezione, nel quale non è possibile modificare il campo chiave.
Per risolvere tale problema, dobbiamo utilizzare il metodo ChangeObjectState della proprietà ObjectStateManager della classe contesto
Qui di seguito un esempio ne linguaggio C#:


MIATABELLA objTab = Dato();
  Context.ObjectStateManager.ChangeObjectState(objTab , EntityState.Added);
objTab.ProprietA1 = "Valore";
objTab.CHIAVE = "Nuovo valore";
 Context.SaveChanges();

sabato 22 novembre 2014

Ext.Net 1.x GridPanel problem cell layout Chrome

In alcune versioni di Chrome, utilizzando il controllo GridPanel versione 1.x, si verifica un errore di formattazione, con l'ultima cella disallineata alla griglia.
Per ovviare a tale problema, inserire nella parte css della pagina Aspx, il seguente stile.

 .x-grid3-cell
        {
        
            box-sizing: border-box;
        }

giovedì 20 novembre 2014

Ext.Net How to show loading mask on the page eventi click button

Nella versione 1.x di Ext.Net, se vogliamo visualizzare la maschera di attesa durante il click di un pulsante, dobbiamo impostare nell'evento click del pulsante il parametro eventMask.
L'esempio qui di seguito illustra come eseguire l'evento   click del pulsante, utilizzando il parametro per la visualizzazione della maschera di attesa.



 Click Handler="Coolite.AjaxMethods.Evento_Click({eventMask:{showMask:true, msg:'Caricamento in corso...'}});" 

 


martedì 18 novembre 2014

ext.net textfield numbers only

Nel caso che si vuole rendere il controllo  Textfield di tipo solo numerico, impostando la proprietà  MaskRe="[0-9]*"
Opppure utilizzare il controllo NumberField.

venerdì 14 novembre 2014

Download free Visual Studio Community 2013

Novità importante per tutti gli sviluppatori, da qualche giorno è possibile scaricare gratuitamente la versione Visual Studio Community 2013, un nuovo ambiente di sviluppo, simile a Visual Studio 2013 professional, ideato per singoli programmatori, studenti e per progetti open source.
Per il download e maggiori informazioni visitate il seguente sito http://www.visualstudio.com/en-us/products/visual-studio-community-vs

mercoledì 12 novembre 2014

Download Microsoft Visual Studio Ultimate 2015 Preview

Developer Tools


Dal seguente sito http://www.microsoft.com/en-us/download/details.aspx?id=44934 è possibile scaricare la versione Visual Studio 2015 preview, il nuovo ambiente di sviluppo di Microsoft.
Si ricorda che essendo una versione beta, si consiglia l'installazione su macchine virtuali.

domenica 9 novembre 2014

.Net eseguire query su database diferenti C# e VB.Net

Si riporta l'articolo scritto per il sito http://www.iprogrammatori.it/articoli/programmazione/art_eseguire-query-su-database-differenti_1355.aspx


In questo articolo vedremo come realizzare una semplcie applicazione che permette di eseguire le query su database differenti, in particolare nell'articolo vedremo come effettuare la select su un database di tipo Microsoft Access e Microsoft Sql Server, il tutto utilizzando le librerie Enterprise Library, di Microsoft.

Creazione del progetto

Si crea un progetto di tipo Windows Application, selezionando il linguaggio di programmazione di proprio interesse.
Nella form, inserimano alcuni controlli come una label, una textbox e due pulsanti.
I pulsanti avranno il compito di eseguire le query che viene per i vari database, un pulsante per il database Access e l'altro per il pulsante SQL.

Stesura del codice

Passiamo in visualzzazione codice ed aggiungiamo lo spazio dei nomi riguardante la gestione dei database ed in particolare della libreria EnterpriseLibrary.Data.
Qui di seguito si riporta tale frammento di codice:



VB.Net

 
Imports System

Imports System.Collections.Generic

Imports System.Linq

Imports System.Text

 

Imports System.IO

Imports Microsoft.Practices.EnterpriseLibrary.Data

Imports System.Data

Imports System.Data.Common

 

C#

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.IO;

using Microsoft.Practices.EnterpriseLibrary.Data;

using System.Data;

using System.Data.Common;

using System.Windows.Forms;

 

Ora dobbiamo scrivere il codice che fornita una query, o meglio un istruzione SQL la esegua a prescindere dalla fonte dati.
La funzione qui di seguito, accetta tre argomenti,  la connessione alla fonte dati, ossia la query string, il tipo di provider, ossia che base, (Sql Server, Access, Oracle, etc) e la query.
La funzione restituisce un oggetto di tipo Database, il quale viene valorizzato, quando si esegue la funzione ExecuteDAtaSet dell'oggetto di tipo Database.
Qui di seguito si riporta il frammento di codice per entrambi i linguaggi.



Vb.Net

Function GetDati(Connessione As String, Provider As String, Sql As String) As DataTable

 

        Dim RisultatoDTT As New DataTable

        Try

            Dim dbProviderFactory As DbProviderFactory = DbProviderFactories.GetFactory(Provider)

 

            Dim Database As Database = New GenericDatabase(Connessione, dbProviderFactory)

 

 

            Dim dbCommand As DbCommand

 

            DbCommand = Database.GetSqlStringCommand(Sql)

 

 

            RisultatoDTT = Database.ExecuteDataSet(dbCommand).Tables(0)

 

 

 

 

        Catch ex As Exception

            Throw ex

        End Try

 

 

        Return RisultatoDTT

 

    End Function

 

 

C#

 

          DataTable GetDati  (string Connessione, string Provider, string Sql)

        {

            DataTable RisultatoDTT = new DataTable();

            try

            {

 

                DbProviderFactory dbProviderFactory = DbProviderFactories.GetFactory(Provider);

 

                Database database = new GenericDatabase(Connessione, dbProviderFactory);

 

                DbCommand  dbCommand = default(DbCommand);

 

                dbCommand = database.GetSqlStringCommand(Sql);

 

 

                RisultatoDTT = database.ExecuteDataSet(dbCommand).Tables[0];

 

 

            }

            catch (Exception ex)

            {

 

                throw ex;

            }

            return RisultatoDTT;

        }


Ora non ci resta che scrivere la funzione per eseguire tale query.
Un pulsante richiamerà la funzione impostando come valori, la connectionstring, il tipo di database e la query.
Qui di seguito si riporta il codice per entrambi i linguaggi e per i due database.




Access

Vb.Net

Private Sub btnEsegui_Click(sender As System.Object, e As System.EventArgs) Handles btnEsegui.Click

        Dim Dati As DataTable = GetDati("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\test.mdb", "System.Data.OleDb", TxtSql.Text)

        MessageBox.Show("Record Totali: " & Dati.Rows.Count)

 

    End Sub

 

C#

private void btnEsegui_Click(object sender, EventArgs e)

        {

            DataTable Dati = GetDati(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\test.mdb", "System.Data.OleDb", TxtSql.Text);

            MessageBox.Show("Record Totali: " + Dati.Rows.Count);

 

 

        }

 

 

Sql Server

 

VB.Net

Private Sub BtnEseguiMS_Click(sender As System.Object, e As System.EventArgs) Handles BtnEseguiMS.Click

        Dim Dati As DataTable = GetDati("Server=localhost;Database=test;Trusted_Connection=True;", "System.Data.SqlClient", TxtSql.Text)

 

        MessageBox.Show("Record Totali: " & Dati.Rows.Count)

 

    End Sub

 

C#

private void button1_Click(object sender, EventArgs e)

        {

            DataTable Dati = GetDati(@"Server=localhost;Database=test;Trusted_Connection=True;", "System.Data.SqlClient", TxtSql.Text);

            MessageBox.Show("Record Totali: " + Dati.Rows.Count);

 

        }




Conclusioni
L'articolo ha voluto illustrare una tecnica per estrapolare i dati da database differenti, rendendo in questo modo il nostro programma flessibile su più fonti di dati. Questa tecnica ci permette di rendere le nostre applicazioni flessibili con un alta interoperabilità nella gestione di database differenti, senza modificare il codice.
Tramite semplici impostazioni al programma, che possono essere passate anche dall'esterno, possiamo renderlo facilmente flessibile minimazzando la manutenzione del codice.



Tramite il link download è possibile scaricare il file di esempio di questo articolo.

giovedì 6 novembre 2014

Ext.Net getValue DateField javascript

Il frammento di codice qui di seguito, illustra una tecnica di come ottenere il valore di un controllo DateField in Javascript, in formato mese anno.

DataField1.getValue().format('mY')

domenica 2 novembre 2014

Visual Studio Arduino




Se siete interessati a sviluppare le applicazioni per Arduino in ambiente Visual Studio, dal seguente sito http://www.visualmicro.com/ potete scaricare un componente per Visual Studio che integra in tale ambiente di sviluppo tale possibilità.