试图找出对稍微复杂的SQL数据库执行CRUD操作的最佳方法



我目前正在一个c#。net核心MVC项目与MSSQL数据库后端工作。我采用了数据第一的方法。下面是我的dbcontext的一个简化示例。

//dbcontext//

using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata;
namespace redux.web.Models
{
public partial class assetsdbContext : DbContext
{
public assetsdbContext()
{
}
public assetsdbContext(DbContextOptions<assetsdbContext> options)
: base(options)
{
}
public virtual DbSet<AssetType> AssetType { get; set; }
public virtual DbSet<Assets> Assets { get; set; }
public virtual DbSet<Cpu> Cpu { get; set; }
public virtual DbSet<Memory> Memory { get; set; }
public virtual DbSet<Pcdetails> Pcdetails { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<AssetType>(entity =>
{
entity.Property(e => e.Id).ValueGeneratedNever();
entity.Property(e => e.DisplayName)
.HasMaxLength(50)
.IsUnicode(false);
});
modelBuilder.Entity<Assets>(entity =>
{
entity.Property(e => e.Id).ValueGeneratedNever();
entity.Property(e => e.AssetNo)
.HasMaxLength(50)
.IsUnicode(false);
entity.Property(e => e.AssetTypeId).HasColumnName("AssetTypeID");
entity.Property(e => e.DisplayName)
.HasMaxLength(50)
.IsUnicode(false);
entity.Property(e => e.PcdetailsId).HasColumnName("PCDetailsID");
});
modelBuilder.Entity<Cpu>(entity =>
{
entity.ToTable("CPU");
entity.Property(e => e.Id).ValueGeneratedNever();
entity.Property(e => e.DisplayName)
.HasMaxLength(50)
.IsUnicode(false);
});
modelBuilder.Entity<Memory>(entity =>
{
entity.Property(e => e.Id).ValueGeneratedNever();
entity.Property(e => e.DisplayName)
.HasMaxLength(50)
.IsUnicode(false);
});
modelBuilder.Entity<Pcdetails>(entity =>
{
entity.ToTable("PCDetails");
entity.Property(e => e.Id).ValueGeneratedNever();
entity.Property(e => e.Cpuid).HasColumnName("CPUID");
entity.Property(e => e.MemoryId).HasColumnName("MemoryID");
});
OnModelCreatingPartial(modelBuilder);
}
partial void OnModelCreatingPartial(ModelBuilder modelBuilder);
}
}

我现在的问题是如何处理PC细节时,进入一个新的资产,因为会有PC和非PC资产。我想我需要使用AssetType可能在一个if语句中的创建方法?或者我能以更好的方式设计数据库吗?如有任何意见,我将不胜感激。

我将在PCDetails中包含一个列,该列作为外键链接到Assets表。您可以将业务逻辑添加到您的UI中,以显示更改/添加/删除类型为"pc"的资产的详细信息的选项。

最新更新