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.
40 lines
2.5 KiB
40 lines
2.5 KiB
using Infrastructure.Application.Entites.Settings;
|
|
using IoT.Shared.Application.Domain.Entities;
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
namespace IoT.Shared
|
|
{
|
|
public class IoTSharedDbConfig
|
|
{
|
|
public static void OnModelCreating(ModelBuilder modelBuilder)
|
|
{
|
|
modelBuilder.Entity<Setting>().Property(o=>o.Name).IsRequired();
|
|
modelBuilder.Entity<Setting>().HasIndex(o => o.Name).IsUnique();
|
|
//
|
|
modelBuilder.Entity<IoTGateway>().HasIndex(o => o.Number).IsUnique();
|
|
//
|
|
modelBuilder.Entity<IoTProductCategory>().HasIndex(o => o.Number).IsUnique();
|
|
modelBuilder.Entity<IoTProduct>().HasIndex(o => o.Number).IsUnique();
|
|
modelBuilder.Entity<IoTApi>().HasOne(o => o.Product).WithMany(o => o.Apis).HasForeignKey(o => o.ProductId);
|
|
modelBuilder.Entity<IoTApi>().HasIndex(o => new { o.ProductId, o.Name }).IsUnique();
|
|
modelBuilder.Entity<IoTParameter>().HasOne(o => o.Api).WithMany(o => o.Parameters).HasForeignKey(o => o.ApiId);
|
|
//
|
|
modelBuilder.Entity<IoTDevice>().HasOne(o => o.Product).WithMany(o => o.Devices).HasForeignKey(o => o.ProductId);
|
|
modelBuilder.Entity<IoTDevice>().HasOne(o => o.Node).WithMany(o => o.Devices).HasForeignKey(o => o.NodeId);
|
|
modelBuilder.Entity<IoTDevice>().HasIndex(o => o.Number).IsUnique();
|
|
modelBuilder.Entity<IoTData>().HasOne(o => o.Device).WithMany(o => o.Data).HasForeignKey(o => o.DeviceId);
|
|
//
|
|
modelBuilder.Entity<IoTCommand>().HasOne(o => o.Api).WithMany(o => o.Commands).HasForeignKey(o => o.ApiId);
|
|
modelBuilder.Entity<IoTScene>().HasOne(o => o.Node).WithMany(o => o.Scenes).HasForeignKey(o => o.NodeId).OnDelete(DeleteBehavior.Cascade);
|
|
modelBuilder.Entity<IoTSceneIoTCommand>().HasOne(o => o.Scene).WithMany(o => o.SceneCommands).HasForeignKey(o => o.SceneId);
|
|
modelBuilder.Entity<IoTSceneIoTCommand>().HasOne(o => o.Command).WithMany(o => o.SceneCommands).HasForeignKey(o => o.CommandId);
|
|
modelBuilder.Entity<IoTSceneTimer>().HasOne(o => o.Scene).WithMany(o => o.SceneTimers).HasForeignKey(o => o.SceneId);
|
|
modelBuilder.Entity<IoTSceneTigger>().HasOne(o => o.Scene).WithMany(o => o.SceneTiggers).HasForeignKey(o => o.SceneId);
|
|
modelBuilder.Entity<IoTSceneTigger>().HasOne(o => o.Data).WithMany(o => o.Tiggers).HasForeignKey(o => o.DataId);
|
|
}
|
|
|
|
public static void Seed(DbContext db)
|
|
{
|
|
}
|
|
}
|
|
} |