如何在 ABP 框架中从 Entity Framework 创建视图 (SQL)

How to create View (SQL) from Entity Framework in ABP Framework

我的情况是我需要从另一个数据库查询并在我的应用程序中显示结果。两个数据库都在同一台服务器上。我想到了在我的数据库中创建 SQL-View 的想法,它会查询其他数据库以获取我想要的值。但是我不太确定如何从 ABP 框架创建或映射 SQL-View?

我正在使用带有 Angular 模板的完整 .Net 框架。

在数据库中创建您的 table 视图。然后使用 EF FluentAPI 配置视图映射。这是示例代码:

1.创建 POCO class 映射:

 public class YourView
 {
        public int Id { get; set; }

        public string Value { get; set; }
 }

2。 EF FluentAPI 映射配置:

创建地图class:

 public class YourViewMap : IEntityTypeConfiguration<YourView>
 {
        public void Configure(EntityTypeBuilder<YourView> builder)
        {
            builder.ToTable("YourViewName");
        }
 }

将映射配置添加到您的 DbContext(例如 AbpCoreDbContext)。覆盖 OnModelCreating 方法:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.ApplyConfiguration(new YourViewMap ());
    base.OnModelCreating(modelBuilder);
}

3。获取数据:

使用 IRepository<YourView> 从视图中查询数据。

P.S: 相关问题 how to use views in code first entity framework

EF 不直接支持创建视图。所以你可以试试下面的方法。

  • 使用 Add-Migration 创建空迁移。
  • 在生成迁移的Up方法中编写你的Create View脚本 和 运行 使用 context.Database.ExecuteSqlCommand 方法的脚本。
  • 声明您的 class 并像您对模型所做的那样使用 Table class。

[Table("YourViewName")] public class YourClassName {

}

  • 像这样忽略你的观点class modelBuilder.Ignore<yourClassName>();OnModelCreating 方法中。
  • 运行 Update-Database 在程序包管理器控制台中。

为您的旧数据库创建一个新的 DbContext。您可以在一个 ABP 应用程序中有多个 DbContext。每个 DbContext 都有自己的连接字符串。创建视图有点老套。