OpenRobot.Framework.DynamicModel
1.1.0
See the version list below for details.
dotnet add package OpenRobot.Framework.DynamicModel --version 1.1.0
NuGet\Install-Package OpenRobot.Framework.DynamicModel -Version 1.1.0
<PackageReference Include="OpenRobot.Framework.DynamicModel" Version="1.1.0" />
<PackageVersion Include="OpenRobot.Framework.DynamicModel" Version="1.1.0" />
<PackageReference Include="OpenRobot.Framework.DynamicModel" />
paket add OpenRobot.Framework.DynamicModel --version 1.1.0
#r "nuget: OpenRobot.Framework.DynamicModel, 1.1.0"
#:package OpenRobot.Framework.DynamicModel@1.1.0
#addin nuget:?package=OpenRobot.Framework.DynamicModel&version=1.1.0
#tool nuget:?package=OpenRobot.Framework.DynamicModel&version=1.1.0
OpenRobot.Framework.DynamicModel 使用说明
OpenRobot.Framework.DynamicModel 是一个 .NET 8.0 类库,用于在强类型 DTO 和动态属性模型之间进行双向转换。主要应用于数据模型的扁平化存储和恢复场景。
Architecture
核心转换方向
Model → DynamicProperties: 通过
OpenModelToDynamicProperty.ModelToDynamicProperties()将 DTO 实例转换为OpenModel集合(扁平化结构,便于数据库存储)DynamicProperties → Model: 通过
DynamicPropertyToModelFactory.DynamicPropertiesToModel<T>()将OpenModel集合转换回 DTO 实例
属性类型分类 (PropTypeFactory)
通过自定义特性标记属性类型:
[MainkeyAttribute]- 主键字段,使用 DynamicPropertyId[KeyStringAttribute]- 需要 JSON 序列化的复杂类型[PropIngoreAttribute]- 忽略转换[CustomOpenConvertAttribute]- 自定义转换器
自动识别:
- 基元类型 (string, int, DateTime 等)
- 集合类型 (IEnumerable)
- 自定义对象
关键类
OpenModel- 扁平化数据模型实现IOpenModelBaseApressTemplate- DTO 基类,提供GetSingle()和GetList()方法访问源数据IDynamicTemplateDto- DTO 标记接口IDynamicPropEntity- 实体接口,用于 ORM 映射
Common Commands
# 构建
dotnet build
# Nuget 发布
dotnet pack
nuget push *.nupkg -Source https://api.nuget.org/v3/index.json
Usage Example
// DTO 定义
public class UserDto : IDynamicTemplateDto
{
[Mainkey]
public int Id { get; set; }
[Description("用户名")] // 显示标题
public string Name { get; set; }
[RegularExpression(@"^\d{6}$", ErrorMessage = "必须是6位数字")] // 验证规则
public string Code { get; set; }
public AddressDto Address { get; set; }
public List<PhoneDto> Phones { get; set; }
}
// Model -> DynamicProperties
var models = dto.ModelToDynamicProperties(mainId);
// DynamicProperties -> Model
var result = models.DynamicPropertiesToModel<UserDto>();
Nuget 发布
nuget push *.nupkg -Source https://api.nuget.org/v3/index.json
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net8.0
- No dependencies.
NuGet packages (2)
Showing the top 2 NuGet packages that depend on OpenRobot.Framework.DynamicModel:
| Package | Downloads |
|---|---|
|
OpenRobot.Framework.FormControl
基于数据驱动的 WPF 动态表单构建与渲染引擎,支持 12 种控件类型、级联下拉、条件显示、跨字段校验和多列布局 |
|
|
OpenRobot.Framework.DynamicGeneralService
动态属性管理服务库,提供动态属性 CRUD 操作、实体与 DTO 双向转换、嵌套属性树管理 |
GitHub repositories
This package is not used by any popular GitHub repositories.