StepPropertyConfiguration.cs
3.36 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Rcs.Domain.Entities;
namespace Rcs.Infrastructure.DB.Configuration.Domain
{
/// <summary>
/// StepProperty实体的EF Core配置
/// </summary>
public class StepPropertyConfiguration : IEntityTypeConfiguration<StepProperty>
{
public void Configure(EntityTypeBuilder<StepProperty> builder)
{
// 配置表名
builder.ToTable("step_properties");
// 配置主键
builder.HasKey(e => e.PropertyId);
// 配置属性
builder.Property(e => e.PropertyId)
.HasColumnName("property_id")
.ValueGeneratedNever();
builder.Property(e => e.StepId)
.HasColumnName("step_id")
.IsRequired();
builder.Property(e => e.PropertyType)
.HasColumnName("property_type")
.IsRequired();
builder.Property(e => e.NodeValue)
.HasColumnName("node_value");
builder.Property(e => e.AfterActionType)
.HasColumnName("after_action_type");
builder.Property(e => e.RequestMethod)
.HasColumnName("request_method")
.HasMaxLength(10);
builder.Property(e => e.RequestUrl)
.HasColumnName("request_url")
.HasMaxLength(500);
builder.Property(e => e.RequestParams)
.HasColumnName("request_params")
.HasColumnType("text");
builder.Property(e => e.RepeatCount)
.HasColumnName("repeat_count");
builder.Property(e => e.IntervalTimeMs)
.HasColumnName("interval_time_ms");
builder.Property(e => e.WaitResponseFlag)
.HasColumnName("wait_response_flag")
.HasMaxLength(1);
builder.Property(e => e.ResponseValidationRule)
.HasColumnName("response_validation_rule")
.HasMaxLength(200);
builder.Property(e => e.Description)
.HasColumnName("description")
.HasMaxLength(500);
builder.Property(e => e.ExtraProperties)
.HasColumnName("extra_properties")
.HasColumnType("text");
builder.Property(e => e.CreatedAt)
.HasColumnName("created_at")
.HasColumnType("timestamp without time zone");
builder.Property(e => e.UpdatedAt)
.HasColumnName("updated_at")
.HasColumnType("timestamp without time zone");
// 配置索引
builder.HasIndex(e => e.StepId)
.HasDatabaseName("idx_property_step");
builder.HasIndex(e => new { e.StepId, e.PropertyType })
.HasDatabaseName("idx_property_step_type");
// 配置导航属性 - 多对一关系
builder.HasOne(e => e.Step)
.WithMany(s => s.Properties)
.HasForeignKey(e => e.StepId)
.OnDelete(DeleteBehavior.Cascade);
// 配置导航属性 - 一对多关系
builder.HasMany(e => e.Actions)
.WithOne(a => a.Property)
.HasForeignKey(a => a.PropertyId)
.OnDelete(DeleteBehavior.Cascade);
}
}
}