繁体   English   中英

如何在asp.net中为Value对象创建具有EF核心的存储库

[英]How to create a Repository with EF core for a Value object in asp.net Boilerplate

我已经使用ABP .net核心启动模板创建了第二个dbContext。 一切正常,但是第二个dbContext仅用于从视图中提取数据。

我有一个映射到视图的类,但是该视图没有主键。 如果要有一个主键,它将是一个组合键。

所以我不能从Entity派生该类,所以我选择从ValueObject派生它。

但是ABP不会为ValueObjects afaik创建存储库。

所以我的问题是,如何为ValueObject创建自定义.net核心存储库。 (我只需要一个GetAll的实现,因为它将是一个只读存储库)

您可以从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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM