我想从返回3个不同表的SQL Server存储过程加载3个不同的模型,例如:
select A.id, A.Name from tableA A
select B.id, B.Age from tableB B
select C.Test, C.Param from tableC C
通常,我会使用Entity Framework Core处理单个结果存储过程,如下所示:
背景:
public virtual DbQuery<StoredProcedureModel> spModel{ get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Query<StoredProcedureModel>(entity =>
{
entity.Property(e => e.Id)
.HasColumnName("Id");
entity.Property(e => e.Name)
.HasColumnName("Name");
}
}
储存库:
return _context.StoredProcedureModel
.FromSql<StoredProcedureModel>(
"GET_ID_NAME @ID,@NAME",
new SqlParameter("@ID", ID),
new SqlParameter("@NAME", Name))
.ToList();
这只是一个虚拟示例,但我想知道是否有办法将所有3个表加载到3个不同的模型中(返回的一些表具有相同的列名,如“id”)。
1条答案
按热度按时间xiozqbni1#
目前,实体框架无法实现这一点,但存在FeatureRequest。作为一种解决方法,根据此blog post,有一个使用ADO.Net的解决方案:
首先编写类代码:
然后,将以下函数编码到CustomDbContext类中: