Add full Markdown documentation set

This commit is contained in:
root
2026-02-26 07:49:08 +01:00
parent faf45eed1e
commit 984870f510
10 changed files with 618 additions and 0 deletions

View File

@@ -0,0 +1,101 @@
# Mapping and Entities
DynamORM supports attribute-driven mapping and entity lifecycle helpers.
## Mapping Attributes
## `TableAttribute`
```csharp
[Table(Name = "users", Owner = "dbo", Override = true)]
public class User
{
// ...
}
```
- `Name`: table name override.
- `Owner`: schema/owner segment.
- `Override`: prefer attribute schema info over provider schema.
## `ColumnAttribute`
```csharp
public class User
{
[Column("id", isKey: true)]
public int Id { get; set; }
[Column("email")]
public string Email { get; set; }
}
```
Important flags:
- `IsKey`
- `AllowNull`
- `IsNoInsert`
- `IsNoUpdate`
- `Type`, `Size`, `Precision`, `Scale`
## Ignore Fields
Use `IgnoreAttribute` to skip properties in mapper-driven workflows.
## Validation
`RequiredAttribute` can define value rules.
```csharp
public class Profile
{
[Required(1f, 10f)]
public int Rank { get; set; }
[Required(2, true)]
[Required(7, 18, ElementRequirement = true)]
public decimal[] Scores { get; set; }
}
var issues = DynamicMapperCache.GetMapper<Profile>().ValidateObject(profile);
```
Validation scenarios are verified in `DynamORM.Tests/Helpers/Validation/ObjectValidationTest.cs`.
## `DynamicEntityBase`
`DynamicEntityBase` tracks state and changed fields.
```csharp
public class UserEntity : DynamicEntityBase
{
[Column("id", true)]
public int Id { get; set; }
[Column("first")]
public string First { get; set; }
}
```
Available behaviors:
- `Validate()`
- `Insert(db)`
- `Update(db)`
- `Delete(db)`
- `Refresh(db)`
- `Save(db)` driven by `DynamicEntityState`
## Repository Base
`DynamicRepositoryBase<T>` provides common operations:
- `GetAll()`
- `GetByQuery(...)`
- `Insert(...)`
- `Update(...)`
- `Delete(...)`
- `Save(...)`
It ensures query/table compatibility for `T` unless explicitly bypassed.