SQLClientCoreTool
Alejandro Cernuda
TweetIntroduzione di un semplice strumento per l'interazione tra applicazioni .Net Core e Microsoft SQL Server. Ideale per piccoli progetti, in cui non è necessario, o non si desidera, utilizzare nessuno dei modi comuni per accedere ai dati oggi. Ha anche alcuni metodi che in pratica consumano molto tempo di sviluppo.
Clase DataGather
È l'entità che porta il peso di quasi tutto il lavoro. Si occupa della gestione della connessione con il database e dispone di metodi per le operazioni principali. Ogni volta che deve essere utilizzato, viene chiamato il metodo GetIntance(). Questo è ciò che accade allora.
publicsealedclassDataGather
{
...
privatestatic Lazy<DataGather> instance = new Lazy<DataGath er>(() => new DataGather());
publicstatic DataGather GetInstance( string connectionString, string dataBaseName = "")
{
bool haveOldInstanceWithDifferentConnection = Builder != null && (Builder.ConnectionString != connectionString || instance.Value.ConnectionString != connectionString);
Builder = new SqlConnectionStringBuilder(connectionString);
if (!string .IsNullOrWhiteSpace(dataBaseName) || haveOldInstanceWithDifferentConnection)
{
Builder.InitialCatalog = !string .IsNullOrWhiteSpace(dataBaseName) ? dataBaseName : Builder.InitialCatalog;
returnnew DataGather();
}
return instance.Value;
}
...
}
Esempio di utilizzo
Possiamo cambiare la connessione, sia al database che al server. Nell'esempio seguente ci connettiamo al server "Local1".
privatestringConnectionString { get { returnTestCases.ConnectionString; } }
publicvoidChangeServerToLocal1()
{
DataGather dg = DataGather.GetInstance(ConnectionString);
string serverName =Check.GetCurrentServer(dg);
dg =DataGather.GetInstance(ConnectionString.Replace(serverName, "local1"));
}
SQLClientCoreTool ci consente di archiviare facilmente qualsiasi documento, immagine, pdf, ecc. Nel database SQL. Usiamo il metodo Transformer.CreateBlobFileAsync(string path) per convertire il file in un metodo byte[] che verrà successivamente memorizzato in una colonna di tipo varbinary(max). Ecco l'esempio.
publicasyncTask TestCreateBlobFileAsync(string path)
{
BlobFile blobFile = await Transformer.CreateBlobFileAsync(path);
ValueTest valueTest = newValueTest();
valueTest.Name = blobFile.Name;
valueTest.GuidId = newGuid();
valueTest.Photo = blobFile.FileData;
valueTest.Total = -1;
DataGather dg = DataGather.GetInstance(ConnectionString);
int result = awaitdg.InsertAsync(valueTest);