C#
E’ praticamente una vita che non scrivo piu’ su questo blog per diversi motivi (non penso se ne siano accorti in molti ), ma alla fine (meglio tardi che mai) eccomi con un nuovo post, con un nuovo progetto in testa: portare avanti una guida sullo sviluppo di .NET Core & affini in ambiente Linux. Una prima versione del documento è scaricabile qui: .NET Core & ASP.NET Core in ambiente Linux : si parte dall’installazione di .NET Core in OpenSuse 13.2 fino alla pubblicazione di una semplice Web API su Azure tramite Git, ovviamente usando VS Code come IDE e...
Documentazione "Work in Progress" della prossima release di Entity Framework : http://ef.readthedocs.org/en/latest/
Riprendiamo l’esempio del post precedente per testare l’integrazione tra EF7 e lo storage di Azure. Apriamo NuGet ed installiamo il package “EntityFramework.AzureTableStorage” (sempre in beta): Modifichiamo il codice della classe ItemDB in questo modo: 1 public class ItemDB : DbContext
2 {
3 public DbSet<Item> Items { get; set; }
4
5 protected override void OnConfiguring(DbContextOptions options)
6 {
...
Un’interessante novità introdotta con la versione 6.0 release 4 di Json.NET è la possibilità di eseguire il Merge (utilizzando 4 possibili “variazioni”) di oggetti JObject e Jarray. Un rapido esempio, tramite Web Api: [HttpPost]
public void JsonStringPost([FromBody]string value)
{
JObject jCar = JObject.Parse(value);
JObject jOptional = JObject.Parse(@"{Optionals :['Air Conditioned','Smoker'] }");
jCar.Merge(jOptional, new JsonMergeSettings() { MergeArrayHandling = MergeArrayHandling.Union });
string jsonFormat = jCar.ToString();
Car mergedCar = jCar.ToObject<Car>();
}
Dove l’Action “JsonStringPost” accetta una stringa tipo:
"{ 'Brand': 'Ferrari','Model': 'f450 Modena','Optionals':...
Supporto a “.ToString()” e “String.Concat()”, un esempio: var queryConcat = from c in db.Vehicles
where string.Concat(c.EngineSize, c.HP).Equals("1600110")
select c;
var queryToString = from c in db.Vehicles
where c.HP.ToString().Equals("110")
select c;
Abbiamo due Query LINQ che filtrano i dati in base a condizioni su stringhe, la prima “tira fuori” tutti i veicoli dove la concatenazione dei valori...
Altra feature introdotta, l’attributo “IndexAttribute” che ci permette di definire un indice su una o piu’ colonne. Ad esempio, per creare un indice (di nome “IX_FreeDailyKm”) sulla proprietà “FreeDailyKm” del nostro modello, scriviamo: [Index("IX_FreeDailyKm_Clustered", IsUnique = false, IsClustered = false)]
public int FreeDailyKm { get; set; }
Mentre per creare un indice che insiste su due proprietà, è sufficiente utilizzare lo stesso nome come da esempio:
[Index("IX_Engine", 2)]
public string EngineSize { get; set; }
[Index("IX_Engine", 1)]
public int HP { get; set; }
Utilizzando EF migrations per aggiornare il database, avremmo:
CreateIndex("DomusDotNet.Vehicles", "FreeDailyKm", name: "IX_FreeDailyKm_Clustered");
CreateIndex("DomusDotNet.Vehicles", new[] { "HP", "EngineSize" }, name: "IX_Engine");
Quindi, a livello di database:
Da qualche giorno è stata rilasciata in RTM la versione 6.1.0 di Entity Framework. Una delle novità piu’ interessanti è sicuramente la possibilità di utilizzare l’approcio Code First partendo da un database esistente (potrebbe sembrare strano, ma se pensiamo ad un nuovo sviluppo potrebbe non esserlo). I “ferri” da utilizzare sono ovviamente EF 6.0.1 e la nuova versione di EF Tools, “scaricabile” per VS 2012 e VS 2013 seguendo questo link. Per un semplice test, apriamo VS 2013 (o 2012), magari creando un semplice progetto “Console” al quale aggiungiamo tramite NuGet i riferimenti a EF 6.0.1. Poi tasto destro...
Sono stati rilasciati in RTM, ASP.NET Dynamic Data e EntityDataSource per EntityFrameowrk 6. Per provare la nuova versione di Dynamic Data è sufficiente creare un nuovo progetto di tipo “ASP.NET Dynamic Data Entities Web Application”, ed installare tramite NuGet il package Microsoft.AspNet.DynamicData.EFProvider: Eventualmente forziamo la scrittura dei Template (“A” per sovrascrivere tutto): Aggiungiamo in modalità Code First una semplice classe Book e relativo DbContext: public class Book
{
public int Id { get; set; }
public string Title { get; set; }
public string Authors...
Per automatizzare tramite script il processo di creazione di un WebJob utilizzando Windows Azure Power Shell (Windows PowerShell ISE), i principali comandi da utilizzare sono: Add-AzureAccount, che ci permette di autenticarci utilizzando Active Azure Directory Get-AzureWebsite, per avere una panoramica dei WebSites legati alla subscription con la quale siamo collegati Get-AzureWebsiteJob, il quale ritorna le informazioni sul WebJob specificato dal paramentro Name New-AzureWebsiteJob, il quale permette la creazione di un nuovo WebJob ed accetta in ingresso i seguenti parametri: ...
Torniamo ancora sull’argomento “WebJobs” descrivendo brevemente le varie modalità di Triggering: Alla creazione di un nuovo Blob Alla ricezione di un nuovo Queue Message Esplicatamente tramite l’invocazione della funzione Call Nei post precedenti (parte 1 e parte 2) abbiamo visto come attivare il Trigger del “WebJob” alla creazione di un nuovo Blob all’interno di un container specifico semplicemente utilizzando l’attributo [BlobInput]. Con le stesse modalità é possibile eseguire il Binding di una funzione invocata dall’instanza di JobHost al ricevimento di un messaggio in un specifica...
Full C# Archive