You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
2.1 KiB
38 lines
2.1 KiB
using Microsoft.EntityFrameworkCore;
|
|
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
|
using CellularManagement.Domain.Entities.Device;
|
|
|
|
namespace CellularManagement.Infrastructure.Configurations.Device;
|
|
|
|
public class CellularDeviceConfiguration : IEntityTypeConfiguration<CellularDevice>
|
|
{
|
|
public void Configure(EntityTypeBuilder<CellularDevice> builder)
|
|
{
|
|
builder.ToTable("CellularDevices", t => t.HasComment("蜂窝设备表"));
|
|
builder.HasKey(d => d.Id);
|
|
|
|
// 配置索引
|
|
builder.HasIndex(d => d.SerialNumber).IsUnique().HasDatabaseName("IX_CellularDevices_SerialNumber");
|
|
builder.HasIndex(d => d.DeviceCode).IsUnique().HasDatabaseName("IX_CellularDevices_DeviceCode");
|
|
|
|
// 配置属性
|
|
builder.Property(d => d.Id).HasComment("设备ID");
|
|
builder.Property(d => d.Name).IsRequired().HasMaxLength(100).HasComment("设备名称");
|
|
builder.Property(d => d.SerialNumber).IsRequired().HasMaxLength(50).HasComment("序列号");
|
|
builder.Property(d => d.DeviceCode).IsRequired().HasMaxLength(50).HasComment("设备编码");
|
|
builder.Property(d => d.Description).HasMaxLength(500).HasComment("设备描述");
|
|
builder.Property(d => d.AgentPort).IsRequired().HasComment("Agent端口");
|
|
builder.Property(d => d.IpAddress).IsRequired().HasMaxLength(45).HasComment("IP地址");
|
|
builder.Property(d => d.IsEnabled).IsRequired().HasComment("是否启用");
|
|
builder.Property(d => d.IsRunning).IsRequired().HasComment("设备状态(启动/未启动)");
|
|
builder.Property(d => d.CreatedAt).IsRequired().HasColumnType("timestamp with time zone").HasComment("创建时间");
|
|
builder.Property(d => d.UpdatedAt).IsRequired().HasColumnType("timestamp with time zone").HasComment("更新时间");
|
|
|
|
// 配置一对多关系:一个设备可以有多个协议版本
|
|
builder.HasMany(d => d.ProtocolVersions)
|
|
.WithOne()
|
|
.HasForeignKey(pv => pv.SerialNumber)
|
|
.HasPrincipalKey(d => d.SerialNumber)
|
|
.OnDelete(DeleteBehavior.Cascade);
|
|
}
|
|
}
|