假设我在数据库中有一个表已经填充了数据(从excel导入) .

我正在使用.NET Core和EF Core构建MVC网站(均为v.1.1.2)

我想要做的是创建一系列模型,其数据来自一个原始的“源数据”表 . 源数据表有150列,虽然我现在不需要它们,但我确实希望保留所有列,以便我可以在以后需要时使用它们 .

使用“dotnet ef dbcontext scaffold”命令,我能够生成:

  • Model - 包含每列的所有公共get / set属性

  • DbContext 类 - 使用DbSet和Fluent API语句来引用表和列

通过这种设置,是否可以通过简单地创建各种模型类(多对多关系)来设置一种“虚拟”关系数据模型,并且它们的属性等于原始“源”中已定义的属性实体?

我希望避免的是必须在DB中维护一个实际的关系数据结构(由PK,FK,连接表等链接的独立表)

原因是......我只想从批量导入Excel工作表中每晚更新源数据表,并且不必持久或跟踪数据的任何更改(只读) . 因此,我不想处理在导入过程中将源数据映射到关系表,列,键等所涉及的额外开销/设置/维护 .

我可以简单地创建各种模型,然后在DbContext中重写OnModelCreating方法,传递modelBuilder的实例以将这些DbSet实体映射到源表中的列吗?

namespace VTracker.Contexts
{

    public partial class DataContext : DbContext
    {

        public DataContext(DbContextOptions options) : base(options)
        {
        }

        public DbSet<SourceData> Data { get; set; }
        public DbSet<SomeModel1> Model1 { get; set; }
        public DbSet<SomeModel2> Model2 { get; set; }
        public DbSet<SomeModel3> Model3 { get; set; }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {

            modelBuilder.Entity<SourceData>(entity =>
            {
                // some key must be defined?
                entity.HasKey(e => e.SourceIDColumn);

                entity.ToTable("SourceDataTable");

                entity.Property(e => e.SourceIDColumn)

                entity.Property(e => e.SourceColumn1)
                    .HasColumnName("SourceColumn1")

                // ...... continue mapping .....

                // Some Model 1 Entity Builder

                entity.ToTable("SourceDataTable");

                // ...... continue mapping .....

                // Some Model 2 Entity Builder

                entity.ToTable("SourceDataTable");

                // .... and so on for other models......

            }
        }

    }
}

或者只是将一个实体用于所有内容并且根据需要构建SQL / LINQ查询来检索/加入数据会更好吗?