コード例 #1
0
 public SUnitsController(E2EDbContext context)
 {
     TableControllerOptions = new TableControllerOptions <SUnit> {
         SoftDeleteEnabled = true
     };
     TableRepository = new EntityTableRepository <SUnit>(context);
 }
コード例 #2
0
 public MovieWithPageSizeController(MovieDbContext context) : base()
 {
     Repository = new EntityTableRepository <EFMovie>(context);
     Options    = new TableControllerOptions {
         PageSize = 25
     };
 }
コード例 #3
0
        public void CTOR_ODataSettings_NonZeroByDefault()
        {
            var actual = new TableControllerOptions <Movie>();

            Assert.IsTrue(actual.MaxTop > 1);
            Assert.IsTrue(actual.PageSize > 1);
        }
コード例 #4
0
        public void MaxTop_Throws_WhenOutOfRange(int maxTop)
        {
            // Arrange
            var options = new TableControllerOptions();

            // Act
            Assert.Throws <ArgumentException>(() => options.MaxTop = maxTop);
        }
コード例 #5
0
        public void MaxTop_IsReasonableByDefault()
        {
            // Act
            var options = new TableControllerOptions();

            // Assert
            Assert.True(options.MaxTop > 10000);
        }
コード例 #6
0
        public void PageSize_Throws_WhenOutOfRange(int pageSize)
        {
            // Arrange
            var options = new TableControllerOptions();

            // Act
            Assert.Throws <ArgumentException>(() => options.PageSize = pageSize);
        }
コード例 #7
0
        public void PageSize_IsReasonableByDefault()
        {
            // Act
            var options = new TableControllerOptions();

            // Assert
            Assert.Equal(100, options.PageSize);
        }
コード例 #8
0
 public MoviesController(TableServiceContext dbContext)
 {
     TableControllerOptions = new TableControllerOptions <Movie>()
     {
         MaxTop = 1000
     };
     TableRepository = new EntityTableRepository <Movie>(dbContext);
 }
コード例 #9
0
 public RMoviesController(E2EDbContext context)
 {
     TableControllerOptions = new TableControllerOptions <RMovie>
     {
         SoftDeleteEnabled = true
     };
     TableRepository = new EntityTableRepository <RMovie>(context);
 }
コード例 #10
0
 public LegalMoviesController(MovieDbContext context) : base()
 {
     Repository            = new EntityTableRepository <EFMovie>(context);
     AccessControlProvider = this;
     Options = new TableControllerOptions {
         UnauthorizedStatusCode = StatusCodes.Status451UnavailableForLegalReasons
     };
 }
コード例 #11
0
 public SoftController(MovieDbContext context) : base()
 {
     Repository = new EntityTableRepository <EFMovie>(context);
     Options    = new TableControllerOptions
     {
         EnableSoftDelete = true
     };
 }
コード例 #12
0
        public void DataView_CanRoundtrip()
        {
            var actual           = new TableControllerOptions <Movie>();
            Func <Movie, bool> t = movie => true;

            actual.DataView = t;
            Assert.AreEqual(t, actual.DataView);
        }
コード例 #13
0
 public SoftLoggedController(MovieDbContext context, ILogger <EFMovie> logger) : base()
 {
     Repository = new EntityTableRepository <EFMovie>(context);
     Options    = new TableControllerOptions
     {
         EnableSoftDelete = true
     };
     Logger = logger;
 }
コード例 #14
0
        public void ODataSettings_CanRoundtrip()
        {
            var actual = new TableControllerOptions <Movie>();

            actual.MaxTop   = 10;
            actual.PageSize = 20;
            Assert.AreEqual(10, actual.MaxTop);
            Assert.AreEqual(20, actual.PageSize);
        }
コード例 #15
0
        public void PageSize_CanRoundtrip()
        {
            // Act
            var options = new TableControllerOptions {
                PageSize = 50
            };

            // Assert
            Assert.Equal(50, options.PageSize);
        }
コード例 #16
0
        public void MaxTop_CanRoundtrip()
        {
            // Act
            var options = new TableControllerOptions {
                MaxTop = 50
            };

            // Assert
            Assert.Equal(50, options.MaxTop);
        }
コード例 #17
0
        public void CTOR_SoftDelete_DisabledByDefault()
        {
            var actual = new TableControllerOptions <Movie>();

            Assert.IsFalse(actual.SoftDeleteEnabled);
        }
コード例 #18
0
        public void CTOR_DefaultDataView()
        {
            var actual = new TableControllerOptions <Movie>();

            Assert.IsNotNull(actual.DataView);
        }
コード例 #19
0
        /// <summary>
        /// If Soft-Delete is enabled, and the query does not include __includeDeleted, then add
        /// a clause to the query to exclude deleted records.  If soft-delete is not enabled, or
        /// the query includes __includeDeleted, then all records are returned.
        /// </summary>
        /// <typeparam name="T">The entity type</typeparam>
        /// <param name="query">An <see cref="IQueryable{T}"/> that is to be adjusted</param>
        /// <param name="tableOptions">The table options for the table controller</param>
        /// <param name="request">The <see cref="HttpRequest"/> for the current request</param>
        /// <returns></returns>
        public static IQueryable <T> ApplyDeletedFilter <T>(this IQueryable <T> query, TableControllerOptions <T> tableOptions, HttpRequest request) where T : class, ITableData
        {
            const string IncludeDeletedParameter = "__includedeleted";
            var          includeDeleted          = request.Query.Any(t => t.Key.ToLowerInvariant() == IncludeDeletedParameter);

            if (tableOptions.SoftDeleteEnabled && !includeDeleted)
            {
                return(query.Where(entity => !entity.Deleted));
            }
            return(query);
        }