Пример #1
0
        static void Main(string[] args)
        {
            //Database.SetInitializer(new CreateDatabaseIfNotExists<UnderwritingEntitiesContainer>());

            //EF_concurrencyfeatures();

            using (UnderwritingEntitiesContainer db = new UnderwritingEntitiesContainer())
            {
                //db.Database.Log = Console.WriteLine;

                ////use Db table name for Sqlquery
                ////tightly coupled code
                //var headers = db.headers.SqlQuery("Select * from uw.header");

                //foreach(var h in headers)
                //{
                //    Console.WriteLine("ID" + h.Id + " value " + h.PolicyReference);
                //}

                var objectContext = (db as IObjectContextAdapter).ObjectContext;

                RunUncompiledQuery(objectContext);

                RunCompiledQuery();

                //Use EntitySql
                //strongly typed
                using (EntityConnection connection = objectContext.Connection as EntityConnection)
                {
                    connection.Open();
                    EntityCommand cmd = connection.CreateCommand();
                    cmd.CommandText = "Select value header from UnderwritingEntitiesContainer.headers as header";

                    EntityDataReader dr = cmd.ExecuteReader(CommandBehavior.SequentialAccess);
                    while (dr.Read())
                    {
                        Console.WriteLine("id " + dr["HeaderId"]);
                        Console.WriteLine("value " + dr["PolicyReference"]);
                    }


                    //ObjectQuery
                    string query = "select value h from UnderwritingEntitiesContainer.headers as h";
                    // Use for filter - ObjectParameter
                    foreach (header h in new ObjectQuery <header>(query, objectContext))
                    {
                        Console.WriteLine("id " + h.HeaderId + " policy " + h.PolicyReference);
                    }
                    connection.Close();
                }
            }
            Console.ReadKey();
        }
Пример #2
0
        private static void EF_concurrencyfeatures()
        {
            using (UnderwritingEntitiesContainer db = new UnderwritingEntitiesContainer())
            {
                //using (TransactionScope trans = new TransactionScope())
                //{
                using (var transaction = db.Database.BeginTransaction())
                {
                    try
                    {
                        db.Database.Log = Console.WriteLine;

                        //db.Configuration.AutoDetectChangesEnabled = false;
                        //db.Configuration.ProxyCreationEnabled = false;

                        db.headers.Add(new header()
                        {
                            HeaderId = 2, PolicyReference = "P02"
                        });

                        db.headers.Find(1).PolicyReference += "-1";

                        Console.WriteLine(db.ChangeTracker.Entries().Count());
                        Console.WriteLine(db.ChangeTracker.Entries().Where(e => e.State != System.Data.Entity.EntityState.Unchanged).Count());
                        db.ChangeTracker.DetectChanges();
                        Console.WriteLine(db.ChangeTracker.Entries().Where(e => e.State != System.Data.Entity.EntityState.Unchanged).Count());

                        var changedheader = db.ChangeTracker.Entries().Where(e => e.State == System.Data.Entity.EntityState.Modified).First();

                        Console.WriteLine("ID - " + changedheader.OriginalValues["HeaderId"] + " Modified? " + changedheader.Property("HeaderId").IsModified);
                        Console.WriteLine(changedheader.OriginalValues["PolicyReference"] + " is now " + changedheader.CurrentValues["PolicyReference"]);

                        Console.WriteLine(db.ChangeTracker.Entries().Last().Entity.GetType().FullName);
                        //db.SaveChanges();
                        //transaction.Commit();
                    }
                    catch (Exception)
                    {
                        transaction.Rollback();
                    }
                }
                //trans.Complete();
                //}
            }
        }
Пример #3
0
        private static void RunCompiledQuery()
        {
            using (UnderwritingEntitiesContainer dbContext = new UnderwritingEntitiesContainer())
            {
                var  watch      = new Stopwatch();
                long totalticks = 0;

                dbContext.headers.Include(x => x.claimHeaders).Where(x => x.HeaderId < 10).ToList();

                for (var i = 0; i < 10; i++)
                {
                    watch.Restart();
                    dbContext.headers.Include(x => x.claimHeaders).Where(x => x.HeaderId == i).ToList();
                    watch.Stop();
                    totalticks += watch.ElapsedTicks;
                    Console.WriteLine("Compiled: {0} : {1}", i, watch.ElapsedTicks);
                }
                Console.WriteLine("Average ticks with compiling " + totalticks / 10);
            }
        }