提问人:Ahsan Ali Siddiqi 提问时间:8/5/2023 最后编辑:marc_sAhsan Ali Siddiqi 更新时间:8/5/2023 访问量:91
如何将我的存储过程结果映射到我的类中
How to map my stored procedure result in my class
问:
我在 SQL Server 中有 3 个表。第一个用于订单,第二个用于订单行项目,第三个用于订单日志。
这是我的数据库的图表:
这是我的 SQL Server 存储过程查询:
SELECT
table1.ID AS OrderID,
table1.Account,
table1.OrderNumber,
table2.OrderID AS OrderLineItemID,
table2.ID, table2.Price,
orderlog.ID AS OrderLogID,
orderlog.OrderLog
FROM
[dbo].[Order] AS table1
LEFT JOIN
OrderLineItems AS table2 ON table1.ID = table2.OrderID
LEFT JOIN
[dbo].[OrderLog] AS orderlog ON table1.ID = orderlog.OrderID
WHERE
table1.ID = @orderID
下面附上了存储过程执行结果时的结果图片。
这是我的班级:OrderView
public class OrderView
{
public int ID { get; set; }
public string OrderNumber { get; set; }
public string Account { get; set; }
public List<OrderLineItem> OrderLineItems { get; set; }
public List<OrderLog> OrderLogs { get; set; }
}
我怎样才能做到这一点,以便每当它调用存储过程来获取记录时,它都会映射到我的类而不使用循环?我在 MVC 5 中使用具有数据库优先方法 ASP.NET 实体框架。
答:
0赞
MRP
8/5/2023
#1
我想你可以这样使用:MapToStoredProcedures()
public class OrderView
{
public int ID { get; set; }
public string OrderNumber { get; set; }
public string Account { get; set; }
public List<OrderLineItem> OrderLineItems { get; set; }
public List<OrderLog> OrderLogs { get; set; }
}
public class OrderLineItem
{
public int ID { get; set; }
public int OrderID { get; set; }
public decimal Price { get; set; }
}
public class OrderLog
{
public int ID { get; set; }
public int OrderID { get; set; }
public string OrderLog { get; set; }
}
public class MyContext : DbContext
{
public DbSet<OrderView> OrderViews { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<OrderView>().MapToStoredProcedures();
base.OnModelCreating(modelBuilder);
}
}
或者你可以使用Database.SqlQuery<T>
public IEnumerable<OrderView> GetOrderView(int orderID)
{
var parameters = new SqlParameter[] {
new SqlParameter("@orderID", orderID)
};
var result = this.Database.SqlQuery<OrderView>(
"EXEC dbo.MyStoredProcedure @orderID",
parameters);
return result.ToList();
}
评论
0赞
Ahsan Ali Siddiqi
8/7/2023
我已经执行了 GetOrderView 方法,它在订单行项目和订单日志中显示 null。我在 ASP.Net MVC 5 中使用数据库优先方法,实体版本框架是 6.0。这是我的结果。图像
评论
Include