只读 table/entity EF Core 3.0

Readonly table/entity EF Core 3.0

是否可以在 EF Core 3.0 中制作 table/entity?基本上我有历史表,我想限制 insert/update/delete 命令。

我已经通过更改尝试了 AsNoTracking:

public DbSet<SampleHistory> SampleHistories { get; set; }

至:

public IQueryable<SampleHistory> SampleHistories { get {return Set<SampleHistory>).AsNoTracking<SampleHistory>(); } }

如果我这样做就可以正常工作(数据库中没有保存任何内容):

var v = DbContext.SampleHistories.FirstOrDefault(e => e.HistoryId == 1);
v.Field1 = $"Test{DateTime.Now.ToLongTimeString()}";
DbContext.SaveChanges();

但如果我在保存前添加更新声明,我会看到数据库中的记录正在更新:

var v = DbContext.SampleHistories.FirstOrDefault(e => e.HistoryId == 1);
v.Field1 = $"Test{DateTime.Now.ToLongTimeString()}";
DbContext.Update(v);
DbContext.SaveChanges();

我也想避免这种情况。

我通过强制将此类表生成为视图来解决此要求。

例如:

modelBuilder.Entity<SampleHistory>(eb =>
        {
            eb.HasNoKey();
            eb.ToView("Sample_History");
        .
        .
        .
        });

如果您尝试对此类表执行插入、更新或删除操作,EF 会抛出无效操作异常。