예제 #1
0
 public virtual TEntity Find(int id)
 {
     try
     {
         IQueryable <TEntity> query = _dbSet.AsNoTracking();
         if (query is IQueryable <ILogicalDeletable> )
         {
             var logicalDeletedQuery = query as IQueryable <ILogicalDeletable>;
             Expression <Func <TEntity, bool> > deleteClause = x => !((ILogicalDeletable)x).IsDeleted;
             deleteClause = (Expression <Func <TEntity, bool> >)RemoveCastsVisitor.Visit(deleteClause);
             return(query.Where(deleteClause).Where(e => e.ID == id).SingleOrDefault());
         }
         return(query.Where(e => e.ID == id).SingleOrDefault());
     }
     catch (Exception ex)
     {
         throw new DataAccessException(ex.Message, ex);
     }
 }