public static void execute() { char exec = '-'; if (exec == '+') { Console.WriteLine("Exemple d'utilisation EF Select:\r\n"); using (PubsContext db = new PubsContext()) { } Console.WriteLine("\r\n"); } }
public static void execute() { char exec = '-'; if (exec == '+') { Console.WriteLine("Exemple d'utilisation EF Select:\r\n"); Console.WriteLine("Avant ouverture de connexion:" + DateTime.Now); //MyContextConfiguration.Configure(useCachedDbModelStore: true); //on next run - use EdmxReader! //DbModelBuilder modelBuilder = new DbModelBuilder(); //DbCompiledModel dbCompiledModel = modelBuilder.BuildModel(EdmxReader.Parse(XmlReader.Create(new FileStream(@"C:\temp\myEdmx.xml", FileMode.Open))); //MyContextConfiguration.Configure(useCachedDbModelStore: true); //using (PubsContext db = new PubsContext(dbCompiledModel)) { using (PubsContext db = new PubsContext()) { // on first run //var xml = XmlWriter.Create(new FileStream(@"C:\Temp\myEdmx.xml", FileMode.OpenOrCreate)); //EdmxWriter.WriteEdmx(db, xml); //Console.WriteLine(Environment.SpecialFolder.ApplicationData); //InteractiveViews.SetViewCacheFactory(db, new FileViewCacheFactory(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\Console\EFCache\")); //InteractiveViews.SetViewCacheFactory(db, new FileViewCacheFactory(@"C:\temp\myEdmx.xml")); //Console.WriteLine("Avant requette1:" + DateTime.Now); //foreach (var e in db.employees.ToList()) // Console.WriteLine(e.fname); //Console.WriteLine("Avant requette2:" + DateTime.Now); //foreach (var e in (from t in db.employees where t.job_id == 10 select t)) // Console.WriteLine(e.emp_id + " " + e.fname); //Console.WriteLine("Avant requette3:" + DateTime.Now); //foreach (var e in (db.employees.Where(t => t.fname.CompareTo("N") > 0).ToList())) // Console.WriteLine(e.emp_id + " " + e.fname); Console.WriteLine("Avant requette4:" + DateTime.Now); foreach (string name in (from employee in db.employees where employee.fname.CompareTo("F") > 0 orderby employee.fname select employee.fname)) Console.WriteLine(name); Console.WriteLine("Après dernière requette:" + DateTime.Now); } Console.WriteLine("Après déconnexion:" + DateTime.Now); Console.WriteLine("\r\n"); } }
public static void execute() { char exec = '-'; if (exec == '+') { Console.WriteLine("Exemple d'utilisation Exeption:\r\n"); // Example de deserialisation d'une exception qui à été serialisée un peut plus bas lors d'une execution precedente BinaryFormatter format = new BinaryFormatter(); FileStream f = new FileStream("DataFile.dat", FileMode.Open); Exception exe = (Exception)format.Deserialize(f); Console.WriteLine("Message d'exception precedente qui a été sérialisée:" + exe.Message); f.Close(); try { using (PubsContext db = new PubsContext()) { error.DivideError(); // A Commenter ou Decommenter pour les tests error.MyError(0); // A Commenter ou Decommenter pour les tests // Le bloc try s'arrete dès l'interception d'une erreur: les instructions suivante ne sont pas executées } // Sauf pour le using qui est une exception -> Db.dispose sera appelé même lors d'une Exception levée } catch (MyException ex) { Console.WriteLine("Erreur:" + ex.Message); Console.WriteLine("Source:" + ex.Source); Console.WriteLine("Stack:" + ex.StackTrace); Console.WriteLine("Target:" + ex.TargetSite); Console.WriteLine("Help:" + ex.Data["Help"]); // Information specifique à MyException Console.WriteLine("Data:"); foreach (DictionaryEntry de in ex.Data) { Console.WriteLine(de.Value); } // Affiche l'ensemble des infos du dictionnaire Data throw new MyException2("Message1 MyException", ex); // Relance une nouvelle exception qui serra interceptée en innerException dans Program.Main() } catch (DivideByZeroException ex) { Console.WriteLine("Division par zero:" + ex.Message); // Serialisation de l'object Exception dans un fichier BinaryFormatter formater = new BinaryFormatter(); FileStream fs = new FileStream("DataFile.dat", FileMode.Create); formater.Serialize(fs, ex); fs.Close(); // Envoie mail si erreur --> Doit être traité dans Main() qui intercepte tout les innerException // Email.send("*****@*****.**", Message, GetFile("DataFile.dat"); // on peut envoyer en PJ le fichier qui a été serialisé // Apparament BinnaryFormater est prévu déja pour pouvoir communiquer dirrectement avec d'autre services RPC ou réseaux ??? throw new ArgumentException("Div By zero", ex); // Relance une nouvelle exception qui serra interceptée en innerException dans Program.Main() } // catch (groupeException ex) -> toutes les exceptions qui heritent de groupeException sont interceptées catch (Exception ex) { // En dernier lieu on intercepte toutes les exceptions eventuellement Console.WriteLine("Exception non traitée:" + ex.Message); // FermerBaseDeDonnee(); // On effectue les traitements necessaire avant de quittez le programme suite à erreur throw; // On relance la même exeption afin que le programme s'arrete --> Le stack indiquerra la ligne d'origine dans le try qui a provoqué l'erreur // throw ex -> Idem ci-dessus mais le stack indiquerra cette ligne comme orrigine du problème } finally { Console.WriteLine("Execution de Finaly dans tous les cas"); } // Le prg reprend ici après l'interception d'une erreur Console.WriteLine("Fin execute"); Console.WriteLine("\r\n"); } }