This class is the base entity from which all entities used by the application must inherit.
상속: IOfflineEntity
예제 #1
0
 public void InsertItem(SqlCeOfflineEntity entity)
 {
     InsertItem(entity, false);
 }
예제 #2
0
        public bool TagExists(SqlCeOfflineEntity entity)
        {
            var tag = (Tag) entity;

            using (var command = new SqlCeCommand())
            {
                command.Connection = GetSqlCeConnection();
                command.CommandText = GET_TAG;
                command.Parameters.Add("@ID", SqlDbType.Int).Value = tag.ID;

                object result = command.ExecuteScalar();

                return result != null;
            }
        }
예제 #3
0
        public void DeleteTagItemMapping(SqlCeOfflineEntity entity)
        {
            var tagItemMapping = (TagItemMapping)entity;
            using (var command = new SqlCeCommand())
            {
                command.Connection = GetSqlCeConnection();
                command.CommandText = DELETE_TAGITEMMAPPING;

                command.Parameters.Add("@ID", SqlDbType.NVarChar).Value = tagItemMapping.ServiceMetadata.Id;

                command.ExecuteNonQuery();
            }
        }
예제 #4
0
        public void InsertTagItemMapping(SqlCeOfflineEntity entity, bool isDirty)
        {
            var tagItemMapping = (TagItemMapping)entity;

                using (var command = new SqlCeCommand())
                {
                    command.Connection = GetSqlCeConnection();
                    command.CommandText = INSERT_TAGITEMMAPPING;

                    command.Parameters.Add("@TagID", SqlDbType.Int).Value = tagItemMapping.TagID;
                    command.Parameters.Add("@ItemID", SqlDbType.UniqueIdentifier).Value = tagItemMapping.ItemID;
                    command.Parameters.Add("@UserID", SqlDbType.UniqueIdentifier).Value = tagItemMapping.UserID;
                    command.Parameters.AddWithValue("@IsDirty", isDirty ? 1 : 0);

                    if (null == tagItemMapping.ServiceMetadata.Id)
                    {
                        command.Parameters.Add("@MetadataId", SqlDbType.NVarChar, 250).Value = DBNull.Value;
                    }
                    else
                    {
                        command.Parameters.Add("@MetadataId", SqlDbType.NVarChar, 250).Value = tagItemMapping.ServiceMetadata.Id;
                    }

                    command.ExecuteNonQuery();
                }
        }
예제 #5
0
        public bool ListExists(SqlCeOfflineEntity entity)
        {
            var list = (List)entity;

            using (var command = new SqlCeCommand())
            {
                command.Connection = GetSqlCeConnection();
                command.CommandText = GET_LIST;
                command.Parameters.Add("@ID", SqlDbType.UniqueIdentifier).Value = list.ID;

                object result = command.ExecuteScalar();

                return result != null;
            }
        }
예제 #6
0
        public void InsertList(SqlCeOfflineEntity entity, bool isDirty)
        {
            var list = (List)entity;

            using (var command = new SqlCeCommand())
            {
                command.Connection = GetSqlCeConnection();
                command.CommandText = INSERT_LIST;

                command.Parameters.Add("@ID", SqlDbType.UniqueIdentifier).Value = list.ID;
                command.Parameters.AddWithValue("@Name", list.Name);
                command.Parameters.AddWithValue("@Description", list.Description ?? "");
                command.Parameters.Add("@UserID", SqlDbType.UniqueIdentifier).Value = list.UserID;
                command.Parameters.Add("@CreatedDate", SqlDbType.DateTime).Value = list.CreatedDate;
                command.Parameters.AddWithValue("@IsDirty", isDirty ? 1 : 0);

                if (null == list.ServiceMetadata.Id)
                {
                    command.Parameters.Add("@MetadataId", SqlDbType.NVarChar, 250).Value = DBNull.Value;
                }
                else
                {
                    command.Parameters.Add("@MetadataId", SqlDbType.NVarChar, 250).Value = list.ServiceMetadata.Id;
                }

                command.ExecuteNonQuery();
            }
        }
예제 #7
0
        public void InsertTag(SqlCeOfflineEntity entity)
        {
            var tag = (Tag)entity;

            using (var command = new SqlCeCommand())
            {
                command.Connection = GetSqlCeConnection();
                command.CommandText = INSERT_TAG;
                command.Parameters.Add("@ID", SqlDbType.Int).Value = tag.ID;
                command.Parameters.AddWithValue("@Name", tag.Name);

                if (null == tag.ServiceMetadata.Id)
                {
                    command.Parameters.Add("@MetadataId", SqlDbType.NVarChar, 250).Value = DBNull.Value;
                }
                else
                {
                    command.Parameters.Add("@MetadataId", SqlDbType.NVarChar, 250).Value = tag.ServiceMetadata.Id;
                }

                command.ExecuteNonQuery();
            }
        }
예제 #8
0
        public void UpdateStatus(SqlCeOfflineEntity entity)
        {
            var status = (Status) entity;

            using (var command = new SqlCeCommand())
            {
                command.Connection = GetSqlCeConnection();
                command.CommandText = UPDATE_STATUS;
                command.Parameters.Add("@ID", SqlDbType.Int).Value = status.ID;
                command.Parameters.AddWithValue("@Name", status.Name);

                if (null == status.ServiceMetadata.Id)
                {
                    command.Parameters.Add("@MetadataId", SqlDbType.NVarChar, 250).Value = DBNull.Value;
                }
                else
                {
                    command.Parameters.Add("@MetadataId", SqlDbType.NVarChar, 250).Value = status.ServiceMetadata.Id;
                }

                command.ExecuteNonQuery();
            }
        }
예제 #9
0
 /// <summary>
 /// Update/Delete an existing item in the local database. This method is called to 
 /// apply changes received in the upload response.
 /// </summary>
 /// <param name="entity"></param>
 public void ApplyItem(SqlCeOfflineEntity entity)
 {
     if (entity.GetType() == typeof(List))
     {
         if (entity.ServiceMetadata.IsTombstone)
         {
             if (!String.IsNullOrEmpty(entity.ServiceMetadata.Id))
             {
                 // Delete using the metadata id since tombstones do not have the primary keys filled in.
                 // For deletes that are not the result of an upload/download response, we can use the primary keys.
                 DeleteListUsingMetadataId(entity);
             }
             else
             {
                 DeleteList(entity);
             }
         }
         else
         {
             UpdateList(entity);
         }
     }
     else if (entity.GetType() == typeof(Item))
     {
         if (entity.ServiceMetadata.IsTombstone)
         {
             if (!String.IsNullOrEmpty(entity.ServiceMetadata.Id))
             {
                 // Delete using the metadata id since tombstones do not have the primary keys filled in.
                 DeleteItemUsingMetadataId(entity);
             }
             else
             {
                 DeleteItem(entity);
             }
         }
         else
         {
             UpdateItem(entity);
         }
     }
 }
예제 #10
0
 public void UpdateItem(SqlCeOfflineEntity entity)
 {
     UpdateItem(entity, false);
 }
예제 #11
0
 public void UpdateList(SqlCeOfflineEntity entity)
 {
     UpdateList(entity, false);
 }
예제 #12
0
        public void TombstoneTagItemMapping(SqlCeOfflineEntity entity)
        {
            var tagItemMapping = (TagItemMapping) entity;
            using (var command = new SqlCeCommand())
            {
                command.Connection = GetSqlCeConnection();
                command.CommandText = TOMBSTONE_TAGITEMMAPPING;
                command.Parameters.Add("@TagID", SqlDbType.Int).Value = tagItemMapping.TagID;
                command.Parameters.Add("@ItemID", SqlDbType.UniqueIdentifier).Value = tagItemMapping.ItemID;
                command.Parameters.Add("@UserID", SqlDbType.UniqueIdentifier).Value = tagItemMapping.UserID;

                command.ExecuteNonQuery();
            }
        }
예제 #13
0
        public void TombstoneList(SqlCeOfflineEntity entity)
        {
            var list = (List)entity;

            using (var connection = GetSqlCeConnection())
            {
                var transaction = connection.BeginTransaction();

                try
                {

                    using (var command = new SqlCeCommand())
                    {
                        command.Connection = connection;
                        command.CommandText = TOMBSTONE_TAGITEMMAPPING_FOR_LIST;
                        command.Parameters.Add("@ListID", SqlDbType.UniqueIdentifier).Value = list.ID;

                        command.ExecuteNonQuery();
                    }

                    using (var command = new SqlCeCommand())
                    {
                        command.Connection = connection;
                        command.CommandText = TOMBSTONE_ITEMS_FOR_LIST;
                        command.Parameters.Add("@ListID", SqlDbType.UniqueIdentifier).Value = list.ID;

                        command.ExecuteNonQuery();
                    }

                    using (var command = new SqlCeCommand())
                    {
                        command.Connection = connection;
                        command.CommandText = TOMBSTONE_LIST;
                        command.Parameters.Add("@ID", SqlDbType.UniqueIdentifier).Value = list.ID;

                        command.ExecuteNonQuery();
                    }

                    transaction.Commit();
                }
                catch (Exception)
                {
                    transaction.Rollback();
                    throw;
                }
            }
        }
예제 #14
0
        public bool TagItemMappingExists(SqlCeOfflineEntity entity)
        {
            var tagItemMapping = (TagItemMapping)entity;

            using (var command = new SqlCeCommand())
            {
                command.Connection = GetSqlCeConnection();
                command.CommandText = GET_TAGITEMMAPPING;
                command.Parameters.Add("@TagID", SqlDbType.Int).Value = tagItemMapping.TagID;
                command.Parameters.Add("@ItemID", SqlDbType.UniqueIdentifier).Value = tagItemMapping.ItemID;
                command.Parameters.Add("@UserID", SqlDbType.UniqueIdentifier).Value = tagItemMapping.UserID;

                object result = command.ExecuteScalar();

                return result != null;
            }
        }
예제 #15
0
        public void InsertItem(SqlCeOfflineEntity entity, bool isDirty)
        {
            var item = (Item) entity;

            using (var command = new SqlCeCommand())
            {
                command.Connection = GetSqlCeConnection();
                command.CommandText = INSERT_ITEM;

                command.Parameters.Add("@ID", SqlDbType.UniqueIdentifier).Value = item.ID;
                command.Parameters.Add("@ListID", SqlDbType.UniqueIdentifier).Value = item.ListID;
                command.Parameters.Add("@UserID", SqlDbType.UniqueIdentifier).Value = item.UserID;
                command.Parameters.AddWithValue("@Name", item.Name);
                command.Parameters.AddWithValue("@Description", item.Description ?? "");

                if (null == item.Priority)
                {
                    command.Parameters.AddWithValue("@Priority", DBNull.Value);
                }
                else
                {
                    command.Parameters.AddWithValue("@Priority", item.Priority);
                }

                if (null == item.Status)
                {
                    command.Parameters.AddWithValue("@Status", DBNull.Value);
                }
                else
                {
                    command.Parameters.AddWithValue("@Status", item.Status);
                }

                if (null != item.StartDate)
                {
                    command.Parameters.Add("@StartDate", SqlDbType.DateTime).Value = item.StartDate;
                }
                else
                {
                    command.Parameters.Add("@StartDate", SqlDbType.DateTime).Value = DBNull.Value;
                }

                if (null != item.EndDate)
                {
                    command.Parameters.Add("@EndDate", SqlDbType.DateTime).Value = item.EndDate;
                }
                else
                {
                    command.Parameters.Add("@EndDate", SqlDbType.DateTime).Value = DBNull.Value;
                }

                command.Parameters.AddWithValue("@IsDirty", isDirty ? 1 : 0);

                if (null == item.ServiceMetadata.Id)
                {
                    command.Parameters.Add("@MetadataId", SqlDbType.NVarChar, 250).Value = DBNull.Value;
                }
                else
                {
                    command.Parameters.Add("@MetadataId", SqlDbType.NVarChar, 250).Value = item.ServiceMetadata.Id;
                }

                command.ExecuteNonQuery();
            }
        }
예제 #16
0
        public void DeleteItem(SqlCeOfflineEntity entity)
        {
            var item = (Item) entity;

            using (var command = new SqlCeCommand())
            {
                command.Connection = GetSqlCeConnection();
                command.CommandText = DELETE_ITEM;
                command.Parameters.Add("@ID", SqlDbType.UniqueIdentifier).Value = item.ID;

                command.ExecuteNonQuery();
            }
        }
예제 #17
0
 public void InsertList(SqlCeOfflineEntity entity)
 {
     InsertList(entity, false);
 }
예제 #18
0
        public void DeleteList(SqlCeOfflineEntity entity)
        {
            var list = (List)entity;

            using (var command = new SqlCeCommand())
            {
                command.Connection = GetSqlCeConnection();
                command.CommandText = DELETE_LIST;
                command.Parameters.Add("@ID", SqlDbType.UniqueIdentifier).Value = list.ID;

                command.ExecuteNonQuery();
            }
        }
예제 #19
0
        public void InsertPriority(SqlCeOfflineEntity entity)
        {
            var priority = (Priority)entity;

            using (var command = new SqlCeCommand())
            {
                command.Connection = GetSqlCeConnection();
                command.CommandText = INSERT_PRIORITY;
                command.Parameters.Add("@ID", SqlDbType.Int).Value = priority.ID;
                command.Parameters.AddWithValue("@Name", priority.Name);

                if (null == priority.ServiceMetadata.Id)
                {
                    command.Parameters.Add("@MetadataId", SqlDbType.NVarChar, 250).Value = DBNull.Value;
                }
                else
                {
                    command.Parameters.Add("@MetadataId", SqlDbType.NVarChar, 250).Value = priority.ServiceMetadata.Id;
                }

                command.ExecuteNonQuery();
            }
        }
예제 #20
0
        public void DeleteListUsingMetadataId(SqlCeOfflineEntity entity)
        {
            var list = (List)entity;

            using (var command = new SqlCeCommand())
            {
                command.Connection = GetSqlCeConnection();
                command.CommandText = DELETE_LIST_USING_METADATAID;
                command.Parameters.Add("@ID", SqlDbType.NVarChar).Value = list.ServiceMetadata.Id;

                command.ExecuteNonQuery();
            }
        }
예제 #21
0
 public void InsertTagItemMapping(SqlCeOfflineEntity entity)
 {
     InsertTagItemMapping(entity, false);
 }
예제 #22
0
        public void DeletePriority(SqlCeOfflineEntity entity)
        {
            var priority = (Priority) entity;

            using (var command = new SqlCeCommand())
            {
                command.Connection = GetSqlCeConnection();
                command.CommandText = DELETE_PRIORITY;
                command.Parameters.Add("@ID", SqlDbType.NVarChar).Value = priority.ServiceMetadata.Id;

                command.ExecuteNonQuery();
            }
        }
예제 #23
0
        public void InsertUser(SqlCeOfflineEntity entity)
        {
            var user = (User)entity;

            using (var command = new SqlCeCommand())
            {
                command.Connection = GetSqlCeConnection();
                command.CommandText = INSERT_USER;
                command.Parameters.Add("@ID", SqlDbType.UniqueIdentifier).Value = user.ID;
                command.Parameters.AddWithValue("@Name", user.Name);

                if (null == user.ServiceMetadata.Id)
                {
                    command.Parameters.Add("@MetadataId", SqlDbType.NVarChar, 250).Value = DBNull.Value;
                }
                else
                {
                    command.Parameters.Add("@MetadataId", SqlDbType.NVarChar, 250).Value = user.ServiceMetadata.Id;
                }

                command.ExecuteNonQuery();
            }
        }
예제 #24
0
        public void DeleteStatus(SqlCeOfflineEntity entity)
        {
            var status = (Status) entity;

            using (var command = new SqlCeCommand())
            {
                command.Connection = GetSqlCeConnection();
                command.CommandText = DELETE_STATUS;
                command.Parameters.Add("@ID", SqlDbType.NVarChar).Value = status.ServiceMetadata.Id;
                command.ExecuteNonQuery();
            }
        }
예제 #25
0
        public bool PriorityExists(SqlCeOfflineEntity entity)
        {
            var priority = (Priority) entity;

            using (var command = new SqlCeCommand())
            {
                command.Connection = GetSqlCeConnection();
                command.CommandText = GET_PRIORITY;
                command.Parameters.Add("@ID", SqlDbType.Int).Value = priority.ID;

                object result = command.ExecuteScalar();

                return result != null;
            }
        }
예제 #26
0
        public bool StatusExists(SqlCeOfflineEntity entity)
        {
            var status = (Status) entity;

            using (var command = new SqlCeCommand())
            {
                command.Connection = GetSqlCeConnection();
                command.CommandText = GET_STATUS;
                command.Parameters.Add("@ID", SqlDbType.Int).Value = status.ID;

                object result = command.ExecuteScalar();

                return result != null;
            }
        }