Exemplo n.º 1
0
        /// <summary>
        /// 從DB刪除目前的Entity,並且包含刪除裡面的ManyToMany的關係(不只是刪除junction table的記錄,實際的
        /// 對應資料也會刪除)
        /// </summary>
        /// <typeparam name="TEntity">目前這一筆Entity的type</typeparam>
        /// <typeparam name="TManyToMany">要被刪除的Many to many的type</typeparam>
        /// <param name="uow">DB的Unit of work</param>
        /// <param name="main">要被刪除的Entity</param>
        public void DeleteIncludeManyToManyRelationship <TEntity, TManyToMany>(Core.Common.Repository.IUnitOfWork uow,
                                                                               TEntity main)
            where TEntity : class
            where TManyToMany : class
        {
            DeleteOneTypeManyToManyProperty <TEntity, TManyToMany>(uow, main);

            // uow.Repository<TEntity>().Delete(main);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 只刪除某筆entity裡面many to many的實際table儲存資料。
        /// </summary>
        /// <typeparam name="TEntity">目前這一筆Entity的type</typeparam>
        /// <typeparam name="TManyToMany">要被刪除的Many to many的type</typeparam>
        /// <param name="uow">DB的Unit of work</param>
        /// <param name="main">要被刪除的Entity</param>
        private void DeleteOneTypeManyToManyProperty <TEntity, TManyToMany>(Core.Common.Repository.IUnitOfWork uow,
                                                                            TEntity main)
            where TEntity : class
            where TManyToMany : class
        {
            var properties = ReflectionHelper.GetPropertiesOfCurrentType(typeof(TEntity))
                             .Where(x => typeof(ICollection <TManyToMany>).IsAssignableFrom(x.PropertyType));

            foreach (var property in properties)
            {
                var dos = (property.GetValue(main) as ICollection <TManyToMany>).ToList();

                if (dos != null && dos.Count > 0)
                {
                    foreach (var doValue in dos)
                    {
                        uow.Repository <TManyToMany>().Delete(doValue);
                    }
                }
            }
        }