Beispiel #1
0
        public Person DbGetByIdOrDefault(Int32 id, IWormDbConnection db)
        {
            var query = db.CreateQuery();
            query.Sql = "select * from `persons` where `Id`=@id";
            query.AddParam("@id", id);

            IWormDataReader reader = query.ExecuteReader();
            while (reader.Read())
            {
                this.Populate(reader);
                return this;
            }

            return default(Person);
        }
Beispiel #2
0
        public Person DbSave(IWormDbConnection db)
        {
            if (this.DbIsNew())
            {
                return this.DbInsert(db);
            }

            return this.DbUpdate(db);
        }
Beispiel #3
0
        private Person DbUpdate(IWormDbConnection db)
        {
            var query = db.CreateQuery();
            var columns = new List<string>();

            if (this.hasChanged_Name)
            {
                columns.Add("`Name`=@Name");
                query.AddParam("@Name", base.Name);
            }

            if (this.hasChanged_Age)
            {
                columns.Add("`age_in_years`=@Age");
                query.AddParam("@Age", base.Age);
            }

            if (this.hasChanged_Role)
            {
                columns.Add("`Role`=@Role");
                query.AddParam("@Role", base.Role);
            }

            if (this.hasChanged_InternalState)
            {
                columns.Add("`InternalState`=@InternalState");
                query.AddParam("@InternalState", base.InternalState);
            }

            if (columns.Count == 0)
            {
                // nothing has changed... no reason to bother the server
                return this;
            }

            query.Sql = String.Format("update `persons` set {0} where `Id`=@id limit 1", String.Join(", ", columns));
            query.AddParam("@id", base.Id);

            query.ExecuteNonQuery();

            this.hasChanged_Name = false;
            this.hasChanged_Age = false;
            this.hasChanged_Role = false;
            this.hasChanged_InternalState = false;

            return this;
        }
Beispiel #4
0
        private Person DbInsert(IWormDbConnection db)
        {
            var query = db.CreateQuery();
            query.Sql = @"insert into `persons` set
                            `Name` = @Name
                            `age_in_years` = @Age
                            `Role` = @Role
                            `InternalState` = @InternalState
                    ";

            query.AddParam("@Name", base.Name);
            query.AddParam("@Age", base.Age);
            query.AddParam("@Role", base.Role);
            query.AddParam("@InternalState", base.InternalState);

            if (query.ExecuteNonQuery() != 1)
            {
                throw new WormException("No rows were inserted");
            }

            query = db.CreateQuery("select last_insert_id()");
            base.Id = Int32.Parse(query.ExecuteScalar<ulong>().ToString());

            this.hasChanged_Name = false;
            this.hasChanged_Age = false;
            this.hasChanged_Role = false;
            this.hasChanged_InternalState = false;

            return this;
        }