public void Delete <TPropertyEntity>(DeletePropertyContext <TPropertyEntity> context) where TPropertyEntity : PropertyEntity
 {
     using (var db = context.ContextProvider.Provide())
     {
         var property = db.Set <TPropertyEntity>()
                        .Where(s => s.UserId == context.UserId)
                        .FirstOrDefault(s => s.Id == context.Id);
         OnBefore(new RepositoryEventArgs {
             AccessDbContext = context, Instance = property
         });
         if (context.IsCancel)
         {
             return;
         }
         db.Set <TPropertyEntity>().Remove(property);
         var count = db.SaveChanges();
         OnComplete(new RepositoryEventArgs {
             AccessDbContext = context, Count = count
         });
         if (count > 0)
         {
             OnSuccess(new RepositoryEventArgs {
                 AccessDbContext = context, EntityId = context.Id
             });
         }
         else
         {
             OnSuccess(new RepositoryEventArgs {
                 AccessDbContext = context, ErrorMessage = "添加失败"
             });
         }
     }
 }
        public void Delete(Guid id)
        {
            var context = new DeletePropertyContext <TPropertyEntity>
            {
                ContextProvider = _contextProvider,
                Id     = id,
                UserId = UserContext.Current.UserId
            };
            var repository = _repositoryProviderProvider.Provide <IPropertyDeleteRepository>().Provide();

            repository.SuccessEvent += DeleteProperty_SuccessEvent;
            repository.Delete(context);
        }