| `[DynamicPropertySetByClients]` | Controls whether clients may write the field | `Allow` |
| `[DynamicPropertyServerOnly]` | Hides the field from clients entirely | No properties |
| `[DynamicPropertyUnique]` | Marks the field as unique | No properties |
| `[DynamicPropertyFileOptions]` | Marks the field as a file and applies upload constraints | `MaxSizeBytes`, `AllowedContentTypes` |
| `[DynamicPropertyImageOptions]` | Marks the field as an image and applies upload and resize constraints | `MaxSizeBytes`, `MaxWidth`, `MaxHeight`, `ResizeMode`, `AllowedContentTypes` |
| <codeclass="text-nowrap">[DynamicPropertyUI]</code> | Sets the property display name | `DisplayName` |
| <codeclass="text-nowrap">[Display(Name = ...)]</code> | Sets the property display name with standard .NET metadata | `Name` |
| <codeclass="text-nowrap">[DynamicPropertyType]</code> | Overrides the inferred low-code type | `Type` |
| <codeclass="text-nowrap">[DynamicPropertyDefaultValue]</code> | Sets the descriptor default value | `DefaultValue` |
| <codeclass="text-nowrap">[DynamicPropertyNotMapped]</code> | Stores the property in the data dictionary instead of a dedicated DB field | No properties |
| <codeclass="text-nowrap">[DynamicPropertySetByClients]</code> | Controls whether clients may write the field | `Allow` |
| <codeclass="text-nowrap">[DynamicPropertyServerOnly]</code> | Hides the field from clients entirely | No properties |
| <codeclass="text-nowrap">[DynamicPropertyUnique]</code> | Marks the field as unique | No properties |
| <codeclass="text-nowrap">[DynamicPropertyFileOptions]</code> | Marks the field as a file and applies upload constraints | `MaxSizeBytes`, `AllowedContentTypes` |
| <codeclass="text-nowrap">[DynamicPropertyImageOptions]</code> | Marks the field as an image and applies upload and resize constraints | `MaxSizeBytes`, `MaxWidth`, `MaxHeight`, `ResizeMode`, `AllowedContentTypes` |
#### Display Names: `[DynamicPropertyUI]` and `[Display]`
Your DbContext should implement `IDbContextWithDynamicEntities` and call `ConfigureDynamicEntities()`:
Your DbContext should implement `IDbContextWithDynamicEntities` and call both `ConfigureDynamicEntities()` and `ConfigureLowCode()`.
Call `ConfigureDynamicEntities()` before `base.OnModelCreating(builder)` so dynamic entity mappings are available when ABP applies the base model conventions:
````csharp
public class CatalogDbContext : AbpDbContext<CatalogDbContext>, IDbContextWithDynamicEntities