我已经使用ABP .net核心启动模板创建了第二个dbContext。 一切正常,但是第二个dbContext仅用于从视图中提取数据。
我有一个映射到视图的类,但是该视图没有主键。 而如果要有一个主键,它将是一个组合键。
所以我不能从Entity派生该类,所以我选择从ValueObject派生它。
但是ABP不会为ValueObjects afaik创建存储库。
所以我的问题是,如何为ValueObject创建自定义.net核心存储库。 (我只需要实现GetAll,因为它将是一个只读存储库)
答案 0 :(得分:1)
您可以从Entity派生并在DbContext的OnModelCreating中配置视图以将Id属性映射到列。
modelBuilder.Entity<YourEntity>().Property(t => t.Id).HasColumnName("YourColumn");
否则,您可以通过依赖项注入IDbContextProvider服务获得并像简单的DbContext一样使用它
private readonly IDbContextProvider<TDbContext> _dbContextProvider;
public YourService(IDbContextProvider<TDbContext> dbContextProvider)
{
_dbContextProvider = dbContextProvider;
}
public void MethodName(){
var context = _dbContextProvider.GetDbContext();
context.YourEntity.OrderBy(a => a.Name);
}