我的情况是我需要从另一个数据库查询并在我的应用程序中显示结果。这两个数据库位于同一台服务器上。我想出了一个在我的数据库中创建 SQL-View 的想法,它将向其他数据库查询我想要的值。但是我不太确定如何从ABP框架创建或映射SQL-View?
我正在使用带有 Angular 模板的完整 .Net 框架。
不直接支持创建视图。因此,您可以尝试以下方法。
- 使用
Add-Migration
创建空迁移。 - 编写
Up
生成迁移方法的创建视图脚本并使用context.Database.ExecuteSqlCommand
方法运行脚本。 - 声明类并使用
Table
,就像对模型类执行的操作一样。
[Table("YourViewName")]
public class YourClassName
{
}
- 像这样忽略你的视图类
modelBuilder.Ignore<yourClassName>();
OnModelCreating
方法。 - 在程序包管理器控制台中运行
Update-Database
。
在数据库中创建表视图。然后使用 EF FluentAPI 配置视图映射。下面是示例代码:
1. 创建要映射的 POCO 类:
public class YourView
{
public int Id { get; set; }
public string Value { get; set; }
}
2. EF 流利 API 映射配置:
创建地图类:
public class YourViewMap : IEntityTypeConfiguration<YourView>
{
public void Configure(EntityTypeBuilder<YourView> builder)
{
builder.ToTable("YourViewName");
}
}
将映射配置添加到 DbContext(例如 AbpCoreDbContext(。覆盖模型创建方法:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.ApplyConfiguration(new YourViewMap ());
base.OnModelCreating(modelBuilder);
}
3. 获取数据:
使用 IRepository<YourView>
从视图中查询数据。
附言:相关问题如何在代码优先实体框架中使用视图
为旧数据库创建新DbContext
。您可以在一个ABP应用程序中有多个DbContext
.每个DbContext
都有自己的连接字符串。创建视图有点黑客。