EntityFramework
EF 5 aggiunge una importante opzione di configurazione riguardante la "traduzione" delle lambda con parametri NULL: UseCSharpNullComparisonBehavior. Se impostata a true, il comportamento è simile al comportamento che noi Dev siamo abituati con il valore null di C#. Ma andiamo con ordine: Tabella: Id Name 1 Uno 2 NULL 3 NULL 4 due 5 tre Codice: result = db.NullableTables.Where(e => e.Name == null).Count(); Console.WriteLine("Entries...
Capita, soprattutto nel metodo Seed del IDatabaseInitializer<CTX> o nel nuovo DbMigrationsConfigurations<CTX>, di caricare una certa quantità di dati passando dal DbContext (nel mio caso da una piccola applicazione che parsa alcuni file).
Se questa quantità di dati è cospiqua (10000 oggetti), ci si potrebbe ritrovare a perdere un po' di tempo (2 minuti) aspettando che vengano aggiunti al contesto tutti i dati (non sto parlando del tempo di salvataggio, ma di aggiunta al contesto).
Ciò è dovuto al fatto che ogni chiamata al metodo DbSet<Entity>.Add(new object()) chiama implicitamente ObjectContext.DetectChanges().
Per evitare questo, basta impostare:
Context.Configuration.AutoDetectChangesEnabled = false;
Attenzione tuttavia all'uso: "these options are advanced and can potentially...
LightSwitch permette di creare/gestire un database al suo interno senza utilizzare strumenti esterni. Questo DB è chiamato ApplicationData e verrà generato in produzione, in fase di deploy, utilizzando una connection string impostata tramite widzard.
Cosa avviene in pratica:
- La connessione viene memorizzata, sempre con lo stesso nome "_IntrinsicData", all'interno del web.config deployato.
- l'ObjectContext di EF viene autogenerato nel file ServerGenerated\GeneratedArtifacts\ApplicationData.cs
Per utilizzare l'ObjectContext in un WCF Ria Service quindi basta:
- Aggiungere il file al progetto WCF Service (As Link dato che verrà rigenerato)
- Recuperare l'ObjectContext nel seguente modo:
EntityConnectionStringBuilder builder = new EntityConnectionStringBuilder();builder.Metadata = "res://*/ApplicationData.csdl|res://*/ApplicationData.ssdl|res://*/ApplicationData.msl";builder.Provider = "System.Data.SqlClient";builder.ProviderConnectionString = WebConfigurationManager.ConnectionStrings["_IntrinsicData"].ConnectionString;var context = new ApplicationDataObjectContext(builder.ConnectionString);
In questo modo è possibile:
- eseguire query complesse sul nostro db applicativo (quelle supportate dal provider di EF)
-...